|
|
|
Как работает LIKE?
|
|||
|---|---|---|---|
|
#18+
есть 10 000 000 записей таблица Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. есть параметр innodb_buffer_pool_size = 512M делаю запрос по полю name Like %ggdg% limit 5 по операциям с диском видно, что вся таблица загружена в память. и поиск идет в памяти но после того как запрос отработал - выдал 5 записей, по нагрузке на проц(нагрузка 100%) видно, что идет обработка данных базой и есть подозрение , что этот запрос продолжает работать пока не прощупает всю таблицу. потом нагрузка на проц падает практически до 0. как-то можно остановить работу запроса после выдачи данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 08:25:15 |
|
||
|
Как работает LIKE?
|
|||
|---|---|---|---|
|
#18+
никак, это ж серверный процесс избавляться надо от LIKE %что-то% ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 08:28:21 |
|
||
|
Как работает LIKE?
|
|||
|---|---|---|---|
|
#18+
Alex_Ustinovникак, это ж серверный процесс избавляться надо от LIKE %что-то% Like %что-то% - это данность , избавление от него не рассматривается, не обсуждается вопрос почему работает дальше , после выдачи данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 08:51:17 |
|
||
|
Как работает LIKE?
|
|||
|---|---|---|---|
|
#18+
вадяпосле того как запрос отработал - выдал 5 записей, по нагрузке на проц(нагрузка 100%) видно, что идет обработка данных базой и есть подозрение , что этот запрос продолжает работать пока не прощупает всю таблицу. Давайте начнём с конкретного текста запроса - причём не того, что отсылается серверу, а того, что на него приходит согласно логу. Может, там CALC_FOUND_ROWS затесалось... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 09:08:56 |
|
||
|
Как работает LIKE?
|
|||
|---|---|---|---|
|
#18+
по настоящему работает хранимка входной параметр строка name like %что-то% хранимка такая Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 09:15:47 |
|
||
|
Как работает LIKE?
|
|||
|---|---|---|---|
|
#18+
эксплейн посмотрите запроса, все будет понятно. Вы от фуллскана никуда не уходите ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 09:42:25 |
|
||
|
Как работает LIKE?
|
|||
|---|---|---|---|
|
#18+
вадяпосле того как запрос отработал - выдал 5 записей, по нагрузке на проц(нагрузка 100%) видно, что идет обработка данных базой и есть подозрение , что этот запрос продолжает работать пока не прощупает всю таблицу. Проверь. Перед и после EXECUTE поставь что-нить вроде SELECT NOW() и вызови процедуру с консоли. Параллельно веди регистрацию использования процессора. вадякак-то можно остановить работу запроса после выдачи данных? Если верить документации , выполнение обязано прерваться... но неизвестно, относится ли это к PREPARED STATEMENT. Попробуй то же, что выше, но со статическим запросом с тем же текстом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 09:46:40 |
|
||
|
Как работает LIKE?
|
|||
|---|---|---|---|
|
#18+
Alex_UstinovВы от фуллскана никуда не уходите Не факт. Если имеется индекс по полю, по которому идёт отбор, предикат SQL_SMALL_RESULT может привести к использованию этого индекса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 09:48:15 |
|
||
|
Как работает LIKE?
|
|||
|---|---|---|---|
|
#18+
Akina, для меня это нонсенс а этот хинт лучше совсем убрать, он не для этого, имхо, на экперименты к сожалению сейчас нет времени ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 09:52:31 |
|
||
|
Как работает LIKE?
|
|||
|---|---|---|---|
|
#18+
Alex_UstinovAkina, для меня это нонсенс а этот хинт лучше совсем убрать, он не для этого, имхо, на экперименты к сожалению сейчас нет времени Akina прав, с SQL_SMALL_RESULT выполняется 36 сек, без SQL_SMALL_RESULT - 58сек. при выполнении из dbForge выполнение прекращается после выдачи данных. видимо jdbc подгаживает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 10:06:07 |
|
||
|
Как работает LIKE?
|
|||
|---|---|---|---|
|
#18+
вадяс SQL_SMALL_RESULT выполняется 36 сек, без SQL_SMALL_RESULT - 58сек.А покажите планы обоих вариантов. Что-то странно, с докой не сходится. Каждый из вариантов был выполнен по несколько раз и результат устойчивый? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 10:12:15 |
|
||
|
Как работает LIKE?
|
|||
|---|---|---|---|
|
#18+
вадя, я не говорю о SQL_SMALL_RESULT, судя по доке (как-то так) SQL_SMALL_RESULT - времянка в памяти SQL_BIG_RESULT - времянка на диске это может и работает но покажите два эксплейна - с и без SQL_SMALL_RESULT, посмотрим на как используется индекс по name (если он есть) для меня нонсенс, что при LIKE %% с SQL_SMALL_RESULT может использоваться индекс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 10:15:40 |
|
||
|
Как работает LIKE?
|
|||
|---|---|---|---|
|
#18+
Alex_Ustinovдля меня нонсенс, что при LIKE %% с SQL_SMALL_RESULT может использоваться индексИспользовать-то он его может (для сканирования), только непонятно, как на это SQL_SMALL_RESULT умудряется влиять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 10:18:40 |
|
||
|
Как работает LIKE?
|
|||
|---|---|---|---|
|
#18+
Alex_Ustinovдля меня нонсенс, что при LIKE %% с SQL_SMALL_RESULT может использоваться индекс http://dev.mysql.com/doc/refman/5.6/en/limit-optimization.html If you select only a few rows with LIMIT, MySQL uses indexes in some cases when normally it would prefer to do a full table scan. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 10:20:37 |
|
||
|
Как работает LIKE?
|
|||
|---|---|---|---|
|
#18+
вадявся таблица загружена в память.Сомнительно. Не знаю, сколько там реальных данных, но в пределе таблица превышает innodb_buffer_pool_size в три раза. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 10:20:43 |
|
||
|
Как работает LIKE?
|
|||
|---|---|---|---|
|
#18+
miksoftнепонятно, как на это SQL_SMALL_RESULT умудряется влиять.Никак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 10:20:59 |
|
||
|
Как работает LIKE?
|
|||
|---|---|---|---|
|
#18+
Akinaпредикат SQL_SMALL_RESULT может привести к использованию этого индекса.вадяс SQL_SMALL_RESULT выполняется 36 сек, без SQL_SMALL_RESULT - 58сек.Akinamiksoftнепонятно, как на это SQL_SMALL_RESULT умудряется влиять.Никак.Вы меня совсем запутали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 10:31:12 |
|
||
|
Как работает LIKE?
|
|||
|---|---|---|---|
|
#18+
miksoftВы меня совсем запутали. SQL_SMALL_RESULT даёт одну оптимизацию: если для выполнения запроса требуется временная таблица, она строится в памяти, а не на диске. LIMIT даёт две оптимизации: первая может (но не обязана) для сканирования использовать индекс, а не таблицу, вторая должна прервать выполнение запроса по получении затребованного количества записей в выходной поток. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 10:35:28 |
|
||
|
Как работает LIKE?
|
|||
|---|---|---|---|
|
#18+
AkinamiksoftВы меня совсем запутали. SQL_SMALL_RESULT даёт одну оптимизацию: если для выполнения запроса требуется временная таблица, она строится в памяти, а не на диске. LIMIT даёт две оптимизации: первая может (но не обязана) для сканирования использовать индекс, а не таблицу, вторая должна прервать выполнение запроса по получении затребованного количества записей в выходной поток.Тогда постулат "предикат SQL_SMALL_RESULT может привести к использованию этого индекса." придется признать неверным. Хотя тут уже пришел вадя и добавил путаницы :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 10:38:24 |
|
||
|
Как работает LIKE?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. они одинаковы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 10:39:35 |
|
||
|
Как работает LIKE?
|
|||
|---|---|---|---|
|
#18+
вадя Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 10:41:47 |
|
||
|
Как работает LIKE?
|
|||
|---|---|---|---|
|
#18+
Они и должны быть одинаковы. ЕМНИП EXPLAIN при работе НЕ учитывает наличия LIMIT и потенциальных связанных с ним оптимизаций при реальном выполнении запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 10:48:58 |
|
||
|
Как работает LIKE?
|
|||
|---|---|---|---|
|
#18+
Akina, это все нонсенс, вот мой пример: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. т.е. оптимизатор решил 1. что и для p1 лучше пройтись по индексу p1p2 а не p1 2. это все без LIMIT но это все какой-то частный необъяснимый случай... я не могу утверждать что это норма ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 10:54:16 |
|
||
|
Как работает LIKE?
|
|||
|---|---|---|---|
|
#18+
буду путать дальше :) если запускать простой селект с SQL_SMALL_RESULT может выполняться и 1 мин и 38 сек. ~ 50/50 если запускаю в хранимке с SQL_SMALL_RESULT то работает через раз - 1 минута - 38 секунд - 1 минута - 38 секунд (+- 3 сек) запускал 6 раз... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2015, 11:04:53 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39086363&tid=1832570]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
68ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 403ms |

| 0 / 0 |
