|
|
|
Расстановка индексов
|
|||
|---|---|---|---|
|
#18+
Есть запрос: Код: sql 1. 2. 3. 4. 5. 6. И результат: Код: plaintext 1. 2. 3. 4. Есть индекс receiver_grid_idx на 2 колонки - receiver_id и status . Говорим mysql его использовать (USE INDEX) и получаем следующий план запроса: Код: plaintext 1. 2. 3. 4. Добавляем для эксперимента индекс по receiver_id + status + shipper_storage_id + consignee_storage_id + id . Получаем следующее: Код: plaintext 1. 2. 3. 4. Что можете посоветовать для оптимизации выборки? MySQL версии 5.7 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2016, 14:16 |
|
||
|
Расстановка индексов
|
|||
|---|---|---|---|
|
#18+
Помогли в другом месте. В результате запрос получился таким: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2016, 15:33 |
|
||
|
Расстановка индексов
|
|||
|---|---|---|---|
|
#18+
GemorrojВ результате запрос получился таким Версия сервера - не догма, их порой обновляют. Рискуешь... возьми запросы в скобки, чтобы гарантировать сортировку и лимит по суммарному запросу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2016, 17:36 |
|
||
|
Расстановка индексов
|
|||
|---|---|---|---|
|
#18+
Gemorroj, Покажите DDL таблицы с индексами. Сколько записей в таблице и сколько идет в результат, если убрать LIMIT ? OPTIMIZE TABLE, особенно после создания индексов, не пробовали делать? Gemorrojиспользуется PRIMARY индекс, для данного запроса (я вообще не совсем понимаю, как оптимизатор на него вышел).Для сортировки по id вышел. Gemorrojсудя, по EXPLAIN все значительно хуже.А по фактическому времени выполнения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2016, 17:54 |
|
||
|
Расстановка индексов
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. проблема в том, что в slow_log попадают такие записи: # Query_time: 3.833072 Lock_time: 0.000434 Rows_sent: 98 Rows_examined: 209865 Если убрать LIMIT, то EXPLAIN показывает план запроса идентичный 2-му в 1 посте. Как будто сделали USE INDEX. Всего записей в таблице сейчас 210154 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2016, 18:18 |
|
||
|
Расстановка индексов
|
|||
|---|---|---|---|
|
#18+
Реально если указать USE INDEX запрос отрабатывает за 0.2-0.3 сек. Если не указывать, то... В SHOW PROCESSLIST показывает "Sending data" уже секунд 500 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2016, 18:27 |
|
||
|
Расстановка индексов
|
|||
|---|---|---|---|
|
#18+
[quot Gemorroj]Есть запрос: Код: sql 1. 2. 3. 4. 5. 6. тебе нужно два индекса (receiver_id , `status`, shipper_storage_id ) (receiver_id , `status`, consignee_storage_id) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2016, 01:21 |
|
||
|
Расстановка индексов
|
|||
|---|---|---|---|
|
#18+
MasterZiv, >> тебе нужно два индекса не работает так. Использует только один из 2-х. EXPLAIN показывает план аналогичный если бы индекс был receiver_id + status. В случае переписывания запроса через UNION, да, подходят 2 индекса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2016, 09:49 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39318086&tid=1831370]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
161ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 428ms |

| 0 / 0 |
