Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
вот например ищем паспорт на лету, по мере ввода 4506 это серия, 123456 это № ввели 45, ищет LIKE '45%', но `passSer` это SMALLINT, а `passNum` это MEDIUMINT, т.е. INTы а '45%' это, я так понимаю, STRING т.е. это разные типы строк, поэтому облом... короче в example не работают кеи в таком варианте если писать =4506, то работают а без кеев притормаживает уже... и что делать? в стринги серию и № перегонять? и с телефонами также?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2017, 18:56 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
*не example, а explain ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2017, 19:16 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
tip78ввели 45, ищет LIKE '45%', но `passSer` это SMALLINT, а `passNum` это MEDIUMINT, т.е. INTы а '45%' это, я так понимаю, STRING т.е. это разные типы строк, поэтому облом...Бред. Like работает ТОЛЬКО со строковым типом данных, любые другие приводятся к нему перед выполнением оператора: Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2017, 19:55 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
ага... так, я сейчас заметил, что без ORDER BY оно таки летает... в общем такой вот запрос Код: sql 1. 2. 3. 4. это поиск по мере ввода по паспорту и по телефону он работает за 0.02 а если ему добавить ORDER BY `name3` (по фамилии), то 0.40 индекс на `name3` есть как и на все поля в LIKE (причём там и смежные индексы есть, это я потом добавил одиночные) с чем это связано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2017, 20:44 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
Показывайте EXPLAIN. Только цитатой с консоли в тегах кода, а не скриншотом... Но вообще OR во WHERE следует избегать. Лучше переделайте на UNION. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2017, 21:38 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
+----+-------------+-------+------------+-------+---------------+----------+---------+--------------------+------+----------+-------------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-------+------------+-------+---------------+----------+---------+--------------------+------+----------+-------------+ | 1 | SIMPLE | t1 | NULL | index | pass,passSer | name3 | 767 | NULL | 18 | 100.00 | NULL | | 1 | SIMPLE | t2 | NULL | ref | clientID | clientID | 3 | table.t1.id | 1 | 100.00 | Using where | +----+-------------+-------+------------+-------+---------------+----------+---------+--------------------+------+----------+-------------+ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2017, 21:46 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
Ну а DDL где? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2017, 22:09 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
это чтоли? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. warning, кстати, хз о чём... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2017, 22:18 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
tip78 Код: sql 1. Это что за мутант? У вас `table` - это схема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2017, 22:43 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
miksofttip78 Код: sql 1. Это что за мутант? У вас `table` - это схема? нет, название там нормальное ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2017, 22:47 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
tip78miksoftпропущено... Это что за мутант? У вас `table` - это схема? нет, название там нормальноеа что в этой конструкции означает `table` ? И зачем оно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2017, 22:49 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
miksofttip78пропущено... нет, название там нормальноеа что в этой конструкции означает `table` ? И зачем оно? ну там название таблицы было, я его поменял просто ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2017, 22:54 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
tip78miksoftпропущено... а что в этой конструкции означает `table` ? И зачем оно? ну там название таблицы было, я его поменял простоТогда почему конструкция состоит из трех частей, а не двух? Что-то напутали при замене? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2017, 22:55 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
не, так explain выдаёт, я только название поменял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2017, 23:21 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
AkinaПоказывайте EXPLAIN. Только цитатой с консоли в тегах кода, а не скриншотом... Но вообще OR во WHERE следует избегать. Лучше переделайте на UNION. немного не понял, а что должно получиться без WHERE ? будет 2 селекта, 1 с джойном, но там же в одном всё-равно будет WHERE passSer LIKE '45%', а в другом WHERE code LIKE '45%', не? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2017, 00:00 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
вот так он работает за 0.09 Код: sql 1. 2. 3. 4. 5. я всё правильно сделал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2017, 00:06 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
miksofttip78пропущено... ну там название таблицы было, я его поменял простоТогда почему конструкция состоит из трех частей, а не двух? Что-то напутали при замене? извините, спать хочу, там конечно не название таблицы, а название БД было ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2017, 00:07 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
tip78я всё правильно сделал? Ну да, это больше похоже на правду. Есть только одна мелочь - если каждый из подзапросов вернёт одну и ту же запись, и она попадёт в лимит - отобразится дубликат. А для исправления ORDER BY и LIMIT надо ещё добавить в каждый из подзапросов, и заменить UNION ALL на UNION DISTINCT... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2017, 07:37 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
tip78warning, кстати, хз о чём... В варнинг пишется переписанный оптимизатором текст запроса. Нормализованный по именам идентификаторов, поэтому обращения к таблицам/полям развёрнуты в полные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2017, 09:24 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
Akinatip78я всё правильно сделал? Ну да, это больше похоже на правду. Есть только одна мелочь - если каждый из подзапросов вернёт одну и ту же запись, и она попадёт в лимит - отобразится дубликат. А для исправления ORDER BY и LIMIT надо ещё добавить в каждый из подзапросов, и заменить UNION ALL на UNION DISTINCT... а когда много столбов выводить и их надо в каждый SELECT писать одни и те же, это можно как-то оптимизировать, в переменную их загнать, например? Melkijtip78warning, кстати, хз о чём... В варнинг пишется переписанный оптимизатором текст запроса. Нормализованный по именам идентификаторов, поэтому обращения к таблицам/полям развёрнуты в полные. ясно, спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2017, 10:09 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
кстати, запрос так то не сказать, чтобы лучше стал... там rows вырос, стало 15x42466 = 636990, а было 39358 (кол-во клиентов) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2017, 10:14 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2017, 10:16 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
и кстати, ZEROFILL не работает в UNION... если номер телефона такой: 736766, то должен выводить 0736766, ан нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2017, 10:23 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
приходится делать CONVERT(t2.num,CHAR) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2017, 10:25 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
по кеям тоже непонятно опять, они используются или нет... если искать 985, то отрабатывает за 0.20, что опять много походу в редиску надо эти цифры загонять чисто для поиска... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2017, 10:33 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
Ну так увидим мы когда-нить DDL таблиц или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2017, 10:37 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2017, 11:09 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
Индексы - от балды проставлял, что ли? И очень интересно, зачем для явно текстовых данных (code, num) выбраны целочисленные типы... особенно с учётом того, что номер телефона может начинаться нулём. Нахрена номер телефона сделан уникальным? может же быть у двух человек одинаковый номер телефона (скажем, домашний). tip78 Код: sql 1. Показывай, нефиг байты экономить... А пока - создай для теста индекс (code,clientID)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2017, 11:25 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
AkinaИндексы - от балды проставлял, что ли? И очень интересно, зачем для явно текстовых данных (code, num) выбраны целочисленные типы... особенно с учётом того, что номер телефона может начинаться нулём. Нахрена номер телефона сделан уникальным? может же быть у двух человек одинаковый номер телефона (скажем, домашний). по каждому индексу существует поиск в отдельных случаях. Там много чего происходит, разного рода отчётность, например. каким образом исключительно цифры стали "текстовыми данными"? Чаров там нет и не будет. ну и что там 0, есть zerofill. Цифры всегда лучше текста по скорости и байтам. уникальность как раз для того, чтобы двух телефонов не было в системе. "Домашний" это 1 клиент. tip78 Код: sql 1. Показывай, нефиг байты экономить... А пока - создай для теста индекс (code,clientID)...[/quot] ничего этот индекс не дал. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2017, 11:41 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
самым тормозным получается вот этот запрос: Код: sql 1. 2. 3. занимает 11-12сек, когда passser = INT а телефоны ищет за 0.06 ввёл passser2, где он CHAR(4), + INDEX, но это ничего не изменило explain тот же самый, Key только name3 я так понимаю, это тупик, остаётся только редис... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2017, 12:31 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
*0.11-0.12 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2017, 12:34 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
а ещё, что занимательно, с одной цифрой LIKE '9%' он ищет аж 0.70-0.80 это с двумя у него резко падает до 0.12 а с тремя нет - всё также 0.12 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2017, 13:02 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
не знаю как в MYSQL. в оракле WHERE `passSer2` LIKE '45%' нужен функциональный индекс, так как идет неявное преобразование to_char(passSer2), что то типа Код: plsql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2017, 14:32 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
и всё-таки passSer2 в виде CHAR работает как индекс в explain если его запускать без ORDER BY name3 - тогда там только name3 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. т.е. правда моя была: авторввели 45, ищет LIKE '45%', но `passSer` это SMALLINT, а `passNum` это MEDIUMINT, т.е. INTы а '45%' это, я так понимаю, STRING т.е. это разные типы строк, поэтому облом... короче в example не работают кеи в таком варианте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2017, 13:27 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
по passSer MEDIUMINT - так: Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2017, 13:31 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
в общем тупка потихоньку отпускает пока пришёл к тому, что цифры таки надо искать так: BETWEEN 4000 AND 4999 и сразу индексы заработали и кол-во row упало )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2017, 10:11 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
ну в итоге теперь ищет мгновенно )) всем спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2017, 12:35 |
|
||
|
а как быть с LIKE по цифре ? Не работают индексы
|
|||
|---|---|---|---|
|
#18+
tip78BETWEEN 4000 AND 4999Это если цифр всегда ровно 4, а не 3 или 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2017, 21:18 |
|
||
|
|

start [/forum/topic.php?all=1&fid=47&tid=1830635]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 11ms |
| total: | 151ms |

| 0 / 0 |
