Подскажите запрос к базе

Mik Foxi
На сайте с 02.03.2011
Offline
1215
471

есть база (sqlite3, хотя можно и на MySQL перевести) в 100 млн строк.

в базе есть столбец с md5 хешами и индекс по этому полю.

хеши встречаются произвольное количество раз.

можно как-то вывести "топ популярных" записей (подсчитать сколько каждая строка встречается раз и вывести отсортировав по популярности)?

проходить в цикле каждое значение, делая по нему выборку и потом sum это както нереально получится и не спортивно. :crazy: есть более красивые решения?

Антибот, антиспам, веб фаервол, защита от накрутки поведенческих: https://antibot.cloud/ (Зеркало: https://антибот.рф/ ) Форум на замену серчу: https://foxi.biz/
[Удален]
#1

foxi, попробуйте через select count group by и order by

или как нибудь так

SELECT fieldname, count(field_name) FROM тейбл_md5 GROUP BY field_name HAVING count(*) > 1

или

Select Field1, count(*) from тейбл_md5 group by Field1

Mik Foxi
На сайте с 02.03.2011
Offline
1215
#2

JagdTiger, спасибо что подсказали направление куда копать, сегодня буду тестировать.

[Удален]
#3

foxi, незачто, может и не получится :) сам давно не баловался с SQL

siv1987
На сайте с 02.04.2009
Offline
427
#4

Select Field1, count(*) as count from тейбл_md5 group by Field1 ORDER BY count DESC LIMIT 20

[Удален]
#5

siv1987, апгрейд :)

Mik Foxi
На сайте с 02.03.2011
Offline
1215
#6

siv1987, то что надо, красиво и в один запрос. на базе в 1,5 млн строк отрабатывает за 0,8 сек.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий