powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Ускорение LIKE '%str%' в версии 5.7
25 сообщений из 121, страница 3 из 5
Ускорение LIKE '%str%' в версии 5.7
    #39091981
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinovвадя,

)))
перестань заниматься ерундой...
я уже под эту бредятину создал тестовую таблицу 3млн записей поле varchar(50) забито англ алфавитом в случайном порядке
проверял 555 раз
индекс НЕ ИСПОЛЬЗУЕТСЯ... и никогда не будет (можно подождать версии mysql 7)
в каких-то случаях при LIKE %выражение_До_4х_символов% запрос работает меньше 1сек. (символы выбираю наугад)
может быть срабатывает какой-то алгоритм, упомянутый выше
но это не ПРАВИЛО. Никаких ускорений быть не может.
64бит от х32 отличается только тем что система->программы могут использовать более 4Г ОЗУ
все что иногда видите, принимая за ускорение - это чистая случайность...


+ 1
...
Рейтинг: 0 / 0
Ускорение LIKE '%str%' в версии 5.7
    #39092002
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivLumixвадя, ну, фиг знает короче... главное, что вы поставили 5.7, у вас получилась высокая скорость и это главное, а все остальное - фиг с ним!
не фиг с ним, потому что на самом деле он нифига никакую высокую скорость не получил. а только думает, что получил.
полностью согласен, что я просто думаю....
но для опровержения и ли подтверждения я предлагаю проверить и подтвердить и ли опровергнуть.
а не голословно заявлять.
это не маркетинг, мне желательно знать , стоит ли внедрять и переходить на последнюю версию
а 5сек это действительно много, но 10 000 000 записей для моего использования это перебор, потому как 10 лямов наименований товара - это слишком для нормальной конторы
ещё 1 000 000 это куда ни шло.
я не предлагаю использовать везде, у моего метода есть область применения. в которой like '%что-то%' намного удобнее like 'что-то%'
у меня счас работает на 28 000 конструкция like '%что-то%' and like '%что-то%' and like '%что-то%' .
позволяет быстро найти нужное с минимальным вводом. и если 28 000 * (36 сек / 5 сек) = 196 000 буде так жена новой версии , я думаю сто стоит переходить.
я не заставляю всех переходить на новую версию, но если кто-то найдет ещё фишки с ускорением - будет полезно всем
...
Рейтинг: 0 / 0
Ускорение LIKE '%str%' в версии 5.7
    #39092011
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinovвадя,

)))
перестань заниматься ерундой...
я уже под эту бредятину создал тестовую таблицу 3млн записей поле varchar(50) забито англ алфавитом в случайном порядке
проверял 555 раз
индекс НЕ ИСПОЛЬЗУЕТСЯ... и никогда не будет (можно подождать версии mysql 7)
в каких-то случаях при LIKE %выражение_До_4х_символов% запрос работает меньше 1сек. (символы выбираю наугад)
может быть срабатывает какой-то алгоритм, упомянутый выше
но это не ПРАВИЛО. Никаких ускорений быть не может.
64бит от х32 отличается только тем что система->программы могут использовать более 4Г ОЗУ
все что иногда видите, принимая за ускорение - это чистая случайность...
чистая случайность - это голословные твои утверждения, я не говорил, что используется индекс, я не знаю, что там используется.
мне совершенно по барабану, используется там индекс или не используется, мне важно , что есть увеличение ( существенное) скорости.
я могу предоставить данные - проверь
...
Рейтинг: 0 / 0
Ускорение LIKE '%str%' в версии 5.7
    #39092048
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяпотому как 10 лямов наименований товара - это слишком для нормальной конторы
ещё 1 000 000 это куда ни шло.В некоторых предметных областях это вполне себе средненькие значения.
Правда, там такие запросы никому не нужны.
...
Рейтинг: 0 / 0
Ускорение LIKE '%str%' в версии 5.7
    #39092050
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяя могу предоставить данные - проверьБыло бы неплохо, если бы был полный (включая заполнение таблицы данными) скрипт, позволяющий выполнить такого рода тест всем желающим.

Кстати, а Вы смотрели план при быстром выполнении запроса? Может, там что-нибудь новенькое появилось.
...
Рейтинг: 0 / 0
Ускорение LIKE '%str%' в версии 5.7
    #39092055
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE TABLE test.pass (
  column1 varchar(50) DEFAULT NULL,
  name varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  id int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (id),
  INDEX IDX_pass_name (name)
)
ENGINE = INNODB
AUTO_INCREMENT = 10000001
AVG_ROW_LENGTH = 52
CHARACTER SET latin1
COLLATE latin1_swedish_ci
ROW_FORMAT = DYNAMIC;



Код: sql
1.
2.
3.
4.
5.
EXPLAIN SELECT SQL_SMALL_RESULT
  pass.id,
  pass.name
FROM pass
WHERE pass.name LIKE '%вап%' LIMIT 5;



вап там точно нет

Код: plaintext
1.
№	id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	1	SIMPLE	pass	(null)	index	(null)	IDX_pass_name	153	(null)	9920941	11,11	Using where; Using index
...
Рейтинг: 0 / 0
Ускорение LIKE '%str%' в версии 5.7
    #39092057
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в новой версии улучшена многоядерность
...
Рейтинг: 0 / 0
Ускорение LIKE '%str%' в версии 5.7
    #39092062
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
переделал на
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE TABLE test.pass (
  column1 varchar(50) DEFAULT NULL,
  name varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  id int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (id),
  FULLTEXT INDEX IDX_pass_name (name)
)
ENGINE = INNODB
AUTO_INCREMENT = 10000001
AVG_ROW_LENGTH = 61
CHARACTER SET latin1
COLLATE latin1_swedish_ci
ROW_FORMAT = DYNAMIC;


FULLTEXT INDEX IDX_pass_name (name)
впервые увидел что 3 выделенных ядра пахали под 100%

тот же запрос

Код: plaintext
1.
№	id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	1	SIMPLE	pass	(null)	ALL	(null)	(null)	(null)	(null)	10059418	11,11	Using where

время 5 сек
...
Рейтинг: 0 / 0
Ускорение LIKE '%str%' в версии 5.7
    #39092064
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторБыло бы неплохо, если бы был полный (включая заполнение таблицы данными) скрипт, позволяющий выполнить такого рода тест всем желающим.
без проблем , там ~130м
...
Рейтинг: 0 / 0
Ускорение LIKE '%str%' в версии 5.7
    #39092070
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как правильно переделать этот запрос под использование FULLTEXT?
...
Рейтинг: 0 / 0
Ускорение LIKE '%str%' в версии 5.7
    #39092083
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как реализовать на fulltext аналог такого
Код: sql
1.
2.
3.
4.
5.
SELECT SQL_SMALL_RESULT
  pass.id,
  pass.name
FROM pass
WHERE pass.name LIKE '%st1%' and pass.name LIKE '%st2%' and pass.name LIKE '%st3%' LIMIT 5


где st1, st2, st3 части строки , не обязательно с начала или конца слова
...
Рейтинг: 0 / 0
Ускорение LIKE '%str%' в версии 5.7
    #39092108
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinovвадя,

)))
перестань заниматься ерундой...
я уже под эту бредятину создал тестовую таблицу 3млн записей поле varchar(50) забито англ алфавитом в случайном порядке
проверял 555 раз
индекс НЕ ИСПОЛЬЗУЕТСЯ... и никогда не будет (можно подождать версии mysql 7)
в каких-то случаях при LIKE %выражение_До_4х_символов% запрос работает меньше 1сек. (символы выбираю наугад)
может быть срабатывает какой-то алгоритм, упомянутый выше
но это не ПРАВИЛО. Никаких ускорений быть не может.
64бит от х32 отличается только тем что система->программы могут использовать более 4Г ОЗУ
все что иногда видите, принимая за ускорение - это чистая случайность...
№idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsfilteredExtra11SIMPLEpass(null)index(null)IDX_pass_name153(null)992094111,11Using where; Using index
ржу
...
Рейтинг: 0 / 0
Ускорение LIKE '%str%' в версии 5.7
    #39092110
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

многие уже месяц ржут, а вы только начали
надеятся при разработке БД на возможные улучшения в будущих релизах БД - это не есть хорошо.
Всегда надо использовать только то, что работает надежно и предсказуемо.
Если вы просто ставите эксперименты - флаг вам в руки
...
Рейтинг: 0 / 0
Ускорение LIKE '%str%' в версии 5.7
    #39092118
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяпеределал на
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE TABLE test.pass (
  column1 varchar(50) DEFAULT NULL,
  name varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  id int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (id),
  FULLTEXT INDEX IDX_pass_name (name)
)
ENGINE = INNODB
AUTO_INCREMENT = 10000001
AVG_ROW_LENGTH = 61
CHARACTER SET latin1
COLLATE latin1_swedish_ci
ROW_FORMAT = DYNAMIC;


FULLTEXT INDEX IDX_pass_name (name)
впервые увидел что 3 выделенных ядра пахали под 100%

тот же запрос

Код: plaintext
1.
№	id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	1	SIMPLE	pass	(null)	ALL	(null)	(null)	(null)	(null)	10059418	11,11	Using where

время 5 сек FULLTEXT в версии 5.7 работает с InnoDB? это прогресс знатный...
...
Рейтинг: 0 / 0
Ускорение LIKE '%str%' в версии 5.7
    #39092123
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinovвадя,

многие уже месяц ржут, а вы только начали
надеятся при разработке БД на возможные улучшения в будущих релизах БД - это не есть хорошо.
Всегда надо использовать только то, что работает надежно и предсказуемо.
Если вы просто ставите эксперименты - флаг вам в руки
тут уже показали историю развития 5.7 , её новизна относительна
я уже просил 18355381
я аналога на fulltext я не нашёл..
...
Рейтинг: 0 / 0
Ускорение LIKE '%str%' в версии 5.7
    #39092127
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторFULLTEXT в версии 5.7 работает с InnoDB? это прогресс знатный...
мой запрос работает 5 сек при условии что искомой строки нет , если строка есть - время меньше 5 сек, зависит от местанахождения строки,
при этом функциональные возможности с like шире чем fulltext, а при таких скоростях - like становится очень достойно заменой fulltext
...
Рейтинг: 0 / 0
Ускорение LIKE '%str%' в версии 5.7
    #39092131
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinovвадя,

многие уже месяц ржут, а вы только начали
надеятся при разработке БД на возможные улучшения в будущих релизах БД - это не есть хорошо.
Всегда надо использовать только то, что работает надежно и предсказуемо.
Если вы просто ставите эксперименты - флаг вам в руки
а чё ты тогда мозг парил?
Alex_Ustinovперестань заниматься ерундой...
я уже под эту бредятину создал тестовую таблицу 3млн записей поле varchar(50) забито англ алфавитом в случайном порядке
проверял 555 раз
индекс НЕ ИСПОЛЬЗУЕТСЯ... и никогда не будет (можно подождать версии mysql 7)
...
Рейтинг: 0 / 0
Ускорение LIKE '%str%' в версии 5.7
    #39092137
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

Что-то я пропустил, вижу FULLTEXT в InnoDB заявлен с версии 5.6...
...
Рейтинг: 0 / 0
Ускорение LIKE '%str%' в версии 5.7
    #39092140
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

что за манера общения...
я уже ради эксперимента создал таблицу и результаты привел вам. Вы ищите по 3-4 симвалам, при 5 будет гораздо дольше. Я свою часть исследования и результаты привел. Я же просил вас попробовать поиск с НАЧАЛА строки, чтобы вы убедились в ускорении при действительном использовании индекса. Вы согласились, что поиск мгновенный.
Теперь вы выкручиваете ситуацию.
...
Рейтинг: 0 / 0
Ускорение LIKE '%str%' в версии 5.7
    #39092142
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinovвадя,

что за манера общения...
я уже ради эксперимента создал таблицу и результаты привел вам. Вы ищите по 3-4 симвалам, при 5 будет гораздо дольше. Я свою часть исследования и результаты привел. Я же просил вас попробовать поиск с НАЧАЛА строки, чтобы вы убедились в ускорении при действительном использовании индекса. Вы согласились, что поиск мгновенный.
Теперь вы выкручиваете ситуацию.
за манеру извиняюсь
я там набирал любое любое количество.
Код: sql
1.
2.
3.
4.
5.
 SELECT
  pass.id,
  pass.name
FROM pass
WHERE pass.name LIKE '%wretwrtvwre rtwerctwretwrtcertyt5y3twwcrtwc%' LIMIT 5;  


4.5 сек
я делал поиск с начала строки - но меня это не устраивало.
...
Рейтинг: 0 / 0
Ускорение LIKE '%str%' в версии 5.7
    #39092143
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
 SELECT
  pass.id,
  pass.name
FROM pass
WHERE pass.name LIKE '%gerwerwerc%' AND pass.name LIKE '%gwerwerwerwerwec%' LIMIT 5;   


4.5 сек
...
Рейтинг: 0 / 0
Ускорение LIKE '%str%' в версии 5.7
    #39092211
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя, вы там где-то сообщали, что можете скинуть таблицу на 84 мега.
Скиньте ссылку на архив через дропбокс, яндексдиск, гуглдрайв, мейлклауд для всех желающих проверить скорость вашего запроса.
В архив положите sql-дамп для создания таблицы и популяции её значениями в объеме 10 млн. записей и отдельными sql-файлами приложите тестовые запросы, которые предстоит выполнить у себя на серваке и сравнить с вашими скоростями. Ваши результаты замеров укажите в комментариях sql файла
...
Рейтинг: 0 / 0
Ускорение LIKE '%str%' в версии 5.7
    #39092329
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чуть позже
...
Рейтинг: 0 / 0
Ускорение LIKE '%str%' в версии 5.7
    #39092562
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lumix,

это наверное шутка (?........) тащить по инету 84М popotable c popopole varchar(50)? )))
вы же кодер... накодьте на коленке... примерно следующее....
функция, таблица
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
/*ф-я randstr(N) возвратит строку из N символов АНГЛ алфавита*/
CREATE FUNCTION randstr(lenstr INT)
  RETURNS varchar(255)
BEGIN
  SET @randstr := "";
  SET @engstr="abcdefghjklmnopqrstuvwxyz";
  WHILE lenstr > 0 DO
    SET @randstr = CONCAT(@randstr,SUBSTR(@engstr,ROUND(RAND()*CHAR_LENGTH(@engstr)),1)); 
    SET lenstr = lenstr - 1;
  END WHILE;

RETURN @randstr;
END

/*таблица */
CREATE TABLE popotable (
  id int(11) NOT NULL AUTO_INCREMENT,
  popopole varchar(50) DEFAULT NULL,
  PRIMARY KEY (id)
  /* INDEX IDX_popo (popopole) пока уберем */
)
ENGINE = INNODB;


ну и вставляем 1млн еврострок
здесь 200тыс
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 /* 5*5*4*5*5*4*5*4 =200тыс  
выполнить 5 раз для 1млн.*/
INSERT INTO popotable (popopole) 
SELECT randstr(50) FROM 
  (select 1 as a union select 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5) AS t1,
  (select 1 as a union select 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5) AS t2,
  (select 1 as a union select 2 UNION SELECT 3 UNION SELECT 4 ) AS t3,
  (select 1 as a union select 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5) AS t4,
  (select 1 as a union select 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5) AS t5,
  (select 1 as a union select 2 UNION SELECT 3 UNION SELECT 4 ) AS t6,
  (select 1 as a union select 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5) AS t7,
/*  (select 1 as a union select 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5) AS t8,*/
  (select 1 as a union select 2 UNION SELECT 3 UNION SELECT 4 ) AS t9


после вставки необходимого кол-ва индекс добавим
Код: sql
1.
2.
ALTER TABLE popotable
  ADD INDEX IDX_popotable_popopole (popopole);


играемся
SELECT SQL_NO_CACHE * FROM popotable WHERE popopole LIKE "%anyfind%"
...
Рейтинг: 0 / 0
Ускорение LIKE '%str%' в версии 5.7
    #39092574
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_UstinovLumix,

это наверное шутка (?........) тащить по инету 84М popotable c popopole varchar(50)? )))
вы же кодер... накодьте на коленке... примерно следующее....


я не кодер, а быдлокодер)))

кодер - это человек, который верит, что символьная система способна аутентично отразить реальность, тогда как быдлокодер на многолетнем опыте боли от взаимодействия с людьми пришел наконец-то к пониманию, что жизнь намного вариативнее любой символьной системы и, скорее, стремится к случайной среде, причем не в стиле теории вероятностей, а в стиле анекдота про блондинку, у которой вероятность встретить динозавра на улице 50/50 - либо встречу, либо нет

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

вы потратили два дня на взаимные кидания какашками - результат нулевой
теперь настало время узнать какие у него там КОНКРЕТНЫЕ данные, что 5.6 дает 60 сек, а 5.7 дает 6 сек
...
Рейтинг: 0 / 0
25 сообщений из 121, страница 3 из 5
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Ускорение LIKE '%str%' в версии 5.7
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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