MySQL: лучше ли иметь индекс и небольшую файловую сортировку или нет индекса и никакой файловой сортировки? - PullRequest
2 голосов
/ 22 сентября 2010

У меня есть большая база данных (180 000+ строк и быстро растущих) данных о местоположении, и я строю их на карте Google.Для данного порта просмотра я просто хочу подать образец из 100 применимых точек.Поэтому база данных запрашивается по lat / lng, но если я добавлю индекс к этим строкам, проблема в том, что выборка из 100 точек будет либо в нижней, либо в верхней части порта просмотра (в зависимости от того, как используется индекс),Если индекс не используется, точки в значительной степени случайным образом разбросаны по порту просмотра, что гораздо более желательно.Я могу создать такой же эффект для индексированных результатов, выполнив сортировку файлов по третьему, почти случайному полю.

Итак, проблема в том, что лучше: неиндексированный запрос на 180k + строках илиИндексированный запрос, который будет выглядеть как 4k строк и выполнять сортировку файлов?Спасибо!

Ответы [ 2 ]

2 голосов
/ 23 сентября 2010

Вы найдете множество аргументов против использования "ORDER BY RAND ()", хотя в этой ситуации может быть полезно, если вы сделаете индексирование поля и сочтете результаты профилирования приемлемыми:

mysql> select id from table where id > 10000 and id < 20000 order by rand() limit 0,10;
+-------+
| id    |
+-------+
| 18560 | 
| 18408 | 
| 14058 | 
| 19090 | 
| 11100 | 
| 18945 | 
| 12656 | 
| 16549 | 
| 19321 | 
| 12003 | 
+-------+
10 rows in set (0.04 sec)
2 голосов
/ 22 сентября 2010

Профилирование вашего запроса с индексом и без него. Я использую профилировщик в dbForge Studio для MySQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...