powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / производительность like '%blablabla%'
4 сообщений из 4, страница 1 из 1
производительность like '%blablabla%'
    #32734666
CD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CD
Гость
Есть 2 таблицы:
create table test1(id int unsigned primary key not null auto_increment, name tinytext not null);
create table test2(id int unsigned primary key not null auto_increment, name varchar(255) not null);

Содержимое этих таблиц абсолютно идентично, но число записей довольно существенно, ~ 3 млн

По моим оценкам select * from test1 where name like '%blabla%'; работает примерно на 30% быстрее чем select * from test2 where name like '%blabla%';

Хотя судя по документации должно бы быть наоборот. Данное явление повторяется на совершенно разных платформах/ОС/версиях MySQL. Для меня производетельность таких запросов крайне существенна. Полнотекстовое индексирование неприемлимо, т.к. осуществляется поиск не слова целиком, а подстроки.

Я бы так и использовал tinytext, но при сложных запросах с объединением нескольких таблиц и сортировкой результата приводят к тому, что MySQL при своей работе создаёт временные таблицы, причём ввиду использования tinytext (aka tinyblob), он создает временные таблицы не в памяти, а на диске :(

Посоветуйте как быть в такой ситуации...

P.S. я понимаю то что для text/blob, mediumtext/mediumblob, etc создаются временные таблицы на диске (могут сожрать очень много места). Но почему для tinytext/tinyblob нельзя использовать heap?...
...
Рейтинг: 0 / 0
производительность like '%blablabla%'
    #32735946
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может просто стоит задаться вопросом почему приходиться делать LIKE без использования индексов? Изменить структуру БД или сам запрос!

Код: plaintext
 .  http://sql.ru/]mahoune  
...
Рейтинг: 0 / 0
производительность like '%blablabla%'
    #32736699
CD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CD
Гость
Я кажется написал довольно ясно, нужен поиск по подстроке. Такого индексирования просто не существует
...
Рейтинг: 0 / 0
производительность like '%blablabla%'
    #32736890
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я все прекрасно понимаю, и не надо так раздрожаться!

Если поле Name не очень большое может есть смысл не искать в нем LIKE '%x%'
А постараться убрать % в начале выражения LIKE 'x%' Тогда будут использоваться инедксы!

Код: plaintext
 .  http://sql.ru/]mahoune  
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / производительность like '%blablabla%'
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]