|
|
|
Оптимизация COUNT()
|
|||
|---|---|---|---|
|
#18+
Всем привет! Заранее спасибо за любую помощь) помогите оптимизировать такой запрос. Отрабатывается секунда 5-6. Нужно быстрее Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Таблца items - 8 млн записей: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Таблица section_items - 700 тысяч Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. В таблице RESOURCE поле COUNTRY_ID integer ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2015, 08:56:45 |
|
||
|
Оптимизация COUNT()
|
|||
|---|---|---|---|
|
#18+
BIS-10-2, у тебя нормальное время … делал аналогичное для простого count, простой таблицы — 10 000 000 записей, все помещалось в память (проверялось по использованию памяти) — время 12 сек. одно ядро из 3 грузилось на 100% ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2015, 21:50:02 |
|
||
|
Оптимизация COUNT()
|
|||
|---|---|---|---|
|
#18+
BIS-10-2, CREATE TABLE IF NOT EXISTS `items` ---ENGINE= Aria переведите на InnoDB, есть шанс, что будет быстрее и план запроса (EXPLAIN) покажите ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2015, 23:31:56 |
|
||
|
Оптимизация COUNT()
|
|||
|---|---|---|---|
|
#18+
Можно попробовать вынести таблицу countries из группировки, а группировать по R.COUNTRY_ID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2015, 00:57:23 |
|
||
|
Оптимизация COUNT()
|
|||
|---|---|---|---|
|
#18+
BIS-10-2, напрямую убыстрить врядли получится, надо заходить с флангов: 1. почему надо большая скорость на таком большом количестве записей? 2. сколько записей изменяется (добавляется, изменяется, удаляется) в секунду? 3. нужно ли имено реал-тайм? если ответы на эти вопросы позволят, то можно: 1. Редко высчитать результат по стабильным записям и быстро подсчитывать именившиеся записи с, допустим, полуночи. 2. продолжить идею МикСофта в сторону денормализации например апстрим денормализация -- занести флаг hasSectionId_6 в таблицу Итем. даунстрим денормализация -- занести CountryID из Ресурсов в Итем. 3. еше вариация идеи МикСофта -- сгрупировать сначала по ResourceID только по джоинту Item+SectionItem и лиш потом подцепить Ресорсы о КОнтри с повторной гроуп бы. (результату первой группировки далее адрегировать SUM() ) 4. Забить и заняться DWH с глубокой пре-агрегацией (опятже, если реал-тайм не нужен) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2015, 06:58:41 |
|
||
|
Оптимизация COUNT()
|
|||
|---|---|---|---|
|
#18+
Alex_Ustinov, id | select_type| table | type | possible_keys | key | key_len | ref | rows | Extra 1 | SIMPLE | S | ref | ix_phone,section_id,item_index | ix_phone | 4 | const | 232390 | Using index; Using temporary; Using filesort 1 | SIMPLE | I | eq_ref | PRIMARY,res_id,now_date,sql_index | PRIMARY | 4 | imas.S.item_id | 1 | Using where 1 | SIMPLE | R | eq_ref | PRIMARY PRIMARY | 8 | imas.I.res_id | 1 | Using where 1 | SIMPLE | C | eq_ref | PRIMARY PRIMARY | 4 | imas.R.COUNTRY_ID | 1 | ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2015, 07:04:43 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=47&tid=1832508]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
68ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 226ms |
| total: | 386ms |

| 0 / 0 |
