|
|
|
Как оптимизировать запрос WHERE IN ?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте уважаемые гуру, помогите с запросом: Код: sql 1. 2. 3. Выполняется 0.3-3 сек., в зависимости от значений. Код: sql 1. 2. 3. 4. 5. 6. Если убрать ORDER BY FIELD скорости прибавляется примерно 40%, исчезает Using filesort, как правильно сделать запрос? Нужна сортировка в таком порядке, в каком пришли idx. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 00:47:23 |
|
||
|
Как оптимизировать запрос WHERE IN ?
|
|||
|---|---|---|---|
|
#18+
gogoduck, какая версия сервера? вроде до 5.5 там было неоптимизированый "IN" вообше время какоето страно большое (или у вас полтрилона записей?) попробуйте так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. может ФИЕЛД такой медленый оператор? вообшето можно на CASE заменить, но некузяво писать 50 иф-елсо-в ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 00:59:48 |
|
||
|
Как оптимизировать запрос WHERE IN ?
|
|||
|---|---|---|---|
|
#18+
Сортировка по выражению - это filesort без вариантов. Не лечится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 01:03:45 |
|
||
|
Как оптимизировать запрос WHERE IN ?
|
|||
|---|---|---|---|
|
#18+
AkinaСортировка по выражению - это filesort без вариантов. Не лечится. ну и лечить не надо, это же не обязательно на диске. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 01:08:47 |
|
||
|
Как оптимизировать запрос WHERE IN ?
|
|||
|---|---|---|---|
|
#18+
javajdbc, Версия Код: sql 1. Попробую обновиться завтра. В каждой таблице по 3 млн записей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 01:11:12 |
|
||
|
Как оптимизировать запрос WHERE IN ?
|
|||
|---|---|---|---|
|
#18+
gogoduck, да 5.5. или текушая 5.6 будет лучше. Если это тесты, то лучше сделать чистую инсталяцию с переносом таблиц дампом, а не апгрейд. Там меняются служебные/статистические таблицы, меняются опции в ини файлах, что-то еше.... ничего сверхсложного но пришлось повозится недавно (5.1>5.6 апдейт) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 01:25:09 |
|
||
|
Как оптимизировать запрос WHERE IN ?
|
|||
|---|---|---|---|
|
#18+
javajdbc, Спасибо за инфу, обновился нормально до: Код: sql 1. Запрос начал работать ещё медленнее. Даже на простом WHERE IN, без JOIN и ORDER BY FIELD выбор 50 рандомных idx по индексу проходит в 0.40 сек.(!). В чем может быть проблема, может, кто даст дельный совет? Я грешу на виртуалку (контейнер VMWare 1 CPU, 768RAM). Тестовый скрипт, который выбирает 50 случайных записей по 100 раз (в цикле) завешивает все. Команда top показывает %wa 70-90%. Понятное дело, что не хватает памяти и возрастает нагрузка на диск, но не до такой же степени. В RAM таблицу хранить тоже возможности нет. Что может помочь? Память и диск SSD конечно могу добавить, но меня пугает, что даже на такой конфигурации все завешивается простой выборкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 14:49:13 |
|
||
|
Как оптимизировать запрос WHERE IN ?
|
|||
|---|---|---|---|
|
#18+
gogoduck, Варианты дальнейших исследований 1. сделайте копию на своей локальной машине и посмотрите скорость 2. Какая скорость поиска одной записи (вместро 50 ) ? (совсем без никаких жоинтов.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 15:33:44 |
|
||
|
Как оптимизировать запрос WHERE IN ?
|
|||
|---|---|---|---|
|
#18+
javajdbc, 1 запись стабильно 0.02 сек., это нормально для такой конфигурации? В таблице всего 3 млн записей Попробую на более мощную машину перенести это дело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 15:41:19 |
|
||
|
Как оптимизировать запрос WHERE IN ?
|
|||
|---|---|---|---|
|
#18+
Да слей ты уже свои "50 знаков" во временную memory-таблицу с полями idx и SortOrder... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 22:33:46 |
|
||
|
Как оптимизировать запрос WHERE IN ?
|
|||
|---|---|---|---|
|
#18+
Притормаживает именно выборка по where in, сортировка ещё более менее.. Сменил таблички на myisam, скорость увеличилась ещё в 2 раза. Считаю что на такой конфигурации это максимум, тем более query cache работает отлично, выборка после "соточки" прогонов увеличивается с каждым разом ) Просто любопытно, к примеру, есть база: CREATE TABLE IF NOT EXISTS `test_db` ( `id` INT NULL AUTO_INCREMENT, `slug` INT UNSIGNED NOT NULL DEFAULT 0, PRIMARY KEY (`id`)) ENGINE = myisam Заполнено под 100 млн. Какая скорость по random WHERE id LIMIT 1 должна быть на хорошем железе? 0.00? Это фантастика? База на диске. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 23:17:23 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38546619&tid=1835291]: |
0ms |
get settings: |
7ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 342ms |

| 0 / 0 |
