Наличие более длинной строки в SQL Как выражение позволяют, препятствуют или помогают запросить выполняющуюся скорость?

У меня есть запрос дб, это вызовет полное сканирование таблицы с помощью подобного пункта и натолкнулось на вопрос, на предмет которого мне было любопытно...

Какое из следующего должно работать быстрее в Mysql, или они оба работали бы на той же скорости? Сравнительное тестирование могло бы ответить на это в моем случае, но я хотел бы знать почему из ответа. Фильтруемый столбец содержит пару тысячи символов, если это важно.

SELECT * FROM users WHERE data LIKE '%=12345%'

или

SELECT * FROM users WHERE data LIKE '%proileId=12345%'

Я могу подойти по причинам, почему каждый из них мог бы выполнить другой, но мне любопытно знать логику.

6
задан Allain Lalonde 29 May 2010 в 19:30
поделиться

2 ответа

При прочих равных условиях более длинные строки совпадений должны выполняться быстрее, поскольку это позволяет пропускать тестовые строки с большими шагами и выполнять меньше совпадений.

Пример алгоритмов сопоставления укусов см., Например, в Алгоритм Бойера Мура в Википедии .

Конечно, не все равно, поэтому я определенно проверил бы это.

Быстрая проверка, найденная в справочных документах mysql , следующий абзац:

Если вы используете ... LIKE '% string%' и строка длиннее трех символов, MySQL использует Turbo Boyer -Алгоритм Мура инициализирует шаблон для строки, а затем использует этот шаблон для более быстрого выполнения поиска.

3
ответ дан 17 December 2019 в 07:01
поделиться

Никакой разницы.Поскольку у вас есть знак% в начале вашего выражения LIKE, это полностью исключает использование индексов, которые могут использоваться только для сопоставления префикса a строки.

Так что в любом случае это будет полное сканирование таблицы.

В базе данных значительного размера (то есть такой, которая не помещается в ОЗУ на вашем сервере 32G), ввод-вывод - это самая большая стоимость с очень большим запасом, поэтому я боюсь, что алгоритм сопоставления строк с шаблоном не будет иметь значения. .

1
ответ дан 17 December 2019 в 07:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: