|
Отимизация таблицы
|
|||
---|---|---|---|
#18+
есть таблица Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
В таблице порядка 8 миллионов записей Простой запрос типа Код: sql 1.
выполняется порядка 6с Explain показывает Key key_len ref rows filtred Extra IDX_transaction_day 68 (null) 8825447 3,7 Using where; Using index innodb_buffer_pool_size 24 GB Код: sql 1. 2.
Результат:14038 Подскажите пожалуйста, что не так, почему так долго и можно ли ускорить выборку и что будет при увеличении количества данных ? Планируется 1-2 миллиона записей в сутки PS Сервера Percona MYSQL на хецнере , 3 кластера галера ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2021, 10:37 |
|
Отимизация таблицы
|
|||
---|---|---|---|
#18+
LentyMe Код: sql 1.
Код: sql 1.
P.S. лучше не использовать зарезервированные слова в качестве названий таблиц/полей. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2021, 12:06 |
|
Отимизация таблицы
|
|||
---|---|---|---|
#18+
Gluck99, В ENUM эти значения как пример , их не нужно учитывать ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2021, 13:32 |
|
Отимизация таблицы
|
|||
---|---|---|---|
#18+
Если отформатировать запрос и поубирать лишнюю дрянь, то получается Код: sql 1. 2. 3. 4. 5. 6. 7.
И сразу выплывает вопрос - что за нафиг bet_transaction в выражении группировки? И второй вопрос - нахрена две одинаковых суммы? Но если предположить, что это очередная дрянь, то необходимый для быстрой работы запроса индекс как бы очевиден: Код: sql 1.
Возможно, первые два поля придётся поменять местами. Возможно, третье нужно поставить в начало. Это уже зависит от статистики реальных данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2021, 13:52 |
|
Отимизация таблицы
|
|||
---|---|---|---|
#18+
Akina, К сожалению суть не в индексе, как мне кажется, а в настройках самой БД, так как даже по одиночному индексу date с условием between, select count(*) время запроса около 5c ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2021, 18:24 |
|
Отимизация таблицы
|
|||
---|---|---|---|
#18+
LentyMe Akina, К сожалению суть не в индексе, как мне кажется, а в настройках самой БД, так как даже по одиночному индексу date с условием between, select count(*) время запроса около 5c Akina А какой смысл в индексах по полям amount и bonus? Они ведь не участвуют в отборе. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2021, 18:31 |
|
Отимизация таблицы
|
|||
---|---|---|---|
#18+
SergiiW А какой смысл в индексах по полям amount и bonus? Зато получится покрывающий индекс, и для выполнения запроса к телу таблицы вообще обращаться не потребуется. На практике в половине случаев это сокращает время выполнения запроса приблизительно вдвое, в остальных случаях поменьше, но всё равно весьма прилично. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2021, 19:49 |
|
Отимизация таблицы
|
|||
---|---|---|---|
#18+
Другой запрос из этой же таблицы Код: sql 1. 2. 3. 4. 5. 6.
Время выполнения 15с! Explain { "id": "1", "select_type": "SIMPLE", "table": "pay_transaction", "partitions": "y2021m12", "type": "index", "key": "IDX_bet_test", "key_len": "7", "ref": "null", "rows": "3866324", "filtered": "33,33", "Extra": "Using where; Using index" } Код: sql 1. 2.
как видно индекс задан верно ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 13:17 |
|
Отимизация таблицы
|
|||
---|---|---|---|
#18+
LentyMe как видно индекс задан верно ? "key_len": "7", ... "Extra": "Using where; Using index" говорит, что индекс используется, но не только как индекс (только первые 7 байт индексного выражения используются как индекс - видимо, только первые два поля), но и как компактная копия таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 14:49 |
|
Отимизация таблицы
|
|||
---|---|---|---|
#18+
Akina, Благодарю, реально помогло в этом запросе, большая просьба, ткнуть носом меня , как раскрыть тайну порядка столбцов в индексе ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 15:36 |
|
Отимизация таблицы
|
|||
---|---|---|---|
#18+
Изучите порядок выполнения запросов. Поля, используемые в условиях, обрабатываемых раньше, должны быть впереди. Среди условий одного этапа обработки впереди должны быть те, которые обеспечивают наибольшую селективность. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 16:09 |
|
|
start [/forum/topic.php?fid=47&msg=40123960&tid=1827831]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
77ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 197ms |
0 / 0 |