powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Найти часть значения, имея полное
23 сообщений из 23, страница 1 из 1
Найти часть значения, имея полное
    #39279136
Здравствуйте

Имеется колонка для хранения Штрих-кодов товара
Имеется товар с весом в Штрих-коде

Например в базе хранится 22017634
А поисковый параметр 2201763405121

Как имея 2201763405121 найти 22017634
Код: sql
1.
 WHERE '2201763405121' LIKE barcode%


где
Код: sql
1.
barcode = 22017634
...
Рейтинг: 0 / 0
Найти часть значения, имея полное
    #39279147
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай Жуков,

Код: sql
1.
WHERE '2201763405121' LIKE CONCAT(barcode, '%')
...
Рейтинг: 0 / 0
Найти часть значения, имея полное
    #39279151
MelkijНиколай Жуков,

Код: sql
1.
WHERE '2201763405121' LIKE CONCAT(barcode, '%')



Почему-то находит значения
с пустым значением
но это не смертельно
Код: sql
1.
WHERE '2201763405121' LIKE CONCAT(barcode, '%') AND barcode!=''


но почему-то значение 2 у штрих-кода тоже отвечает условию

то есть
Я получаю в ответ 2-е стороки
Код: sql
1.
2.
barcode=22017634
barcode=2
...
Рейтинг: 0 / 0
Найти часть значения, имея полное
    #39279152
А ведь правда же отвечает условию
как-то я туплю
Код: sql
1.
WHERE '2201763405121' LIKE CONCAT(2, '%') AND 2!=''





Melkij Спасибо
...
Рейтинг: 0 / 0
Найти часть значения, имея полное
    #39279227
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай Жуков,
учти, что это плохой запрос в смысле производительности, никогда не будет работать быстро, может работать только на маленьких таблицах, типа 10000 строк, поскольку не и использует индекс..
...
Рейтинг: 0 / 0
Найти часть значения, имея полное
    #39279245
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivНиколай Жуков,
учти, что это плохой запрос в смысле производительности, никогда не будет работать быстро, может работать только на маленьких таблицах, типа 10000 строк, поскольку не и использует индекс..
если будет 5.7.хх то будет использовать индекс
...
Рейтинг: 0 / 0
Найти часть значения, имея полное
    #39279384
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
сомневаюсь очень сильно
...
Рейтинг: 0 / 0
Найти часть значения, имея полное
    #39279420
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivвадя,
сомневаюсь очень сильно
проверено, я уже публиковал результаты
...
Рейтинг: 0 / 0
Найти часть значения, имея полное
    #39280004
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

те результаты я опроверг, все выложено.
...
Рейтинг: 0 / 0
Найти часть значения, имея полное
    #39280017
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,
ты их не опроверг.
не хочешь - не используй. у меня при переходе на 5.7.хх скорость работы с like возросла в 5-10 раз.
...
Рейтинг: 0 / 0
Найти часть значения, имея полное
    #39280025
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хочешь не хочешь там предоставлены факты, И долгое время работы запросов у тебя на предыдущей версии было связано с поломанным индексом. Я тебе там это описал. Все данные для проверки я дал. Проверено на нескольких версиях. Ты таких полных тестов так и не сделал.
...
Рейтинг: 0 / 0
Найти часть значения, имея полное
    #39280066
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinovхочешь не хочешь там предоставлены факты, И долгое время работы запросов у тебя на предыдущей версии было связано с поломанным индексом. Я тебе там это описал. Все данные для проверки я дал. Проверено на нескольких версиях. Ты таких полных тестов так и не сделал.
я делал тесты под свои задачи и видел результат - мне этого достаточно.
поломанного индекса в моих тестах я не нашёл...
в общем спор бессмыслененн.
like у меня работает быстро, мне это нравится :)
...
Рейтинг: 0 / 0
Найти часть значения, имея полное
    #39280076
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяпод свои задачиа вдруг у ТСа другие "задачи"?
...
Рейтинг: 0 / 0
Найти часть значения, имея полное
    #39280120
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirвадяпод свои задачиа вдруг у ТСа другие "задачи"?
я предложил работающий вариант - если захочет , пусть проверит.
в 5.7.хх много чего нового, улучшенного
...
Рейтинг: 0 / 0
Найти часть значения, имея полное
    #39280659
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяAlex_Ustinovхочешь не хочешь там предоставлены факты, И долгое время работы запросов у тебя на предыдущей версии было связано с поломанным индексом. Я тебе там это описал. Все данные для проверки я дал. Проверено на нескольких версиях. Ты таких полных тестов так и не сделал.
я делал тесты под свои задачи и видел результат - мне этого достаточно.
поломанного индекса в моих тестах я не нашёл...
в общем спор бессмыслененн.
like у меня работает быстро, мне это нравится :) это не спор, это факты, таблицы я генерировал случайными данными, я же тебя спрашивал в том топике - оказалось, что ты просто обновился до 5.7 на Линукс из репы, не тестируя на прежних версиях. А я их проверил, все возможные у меня стоят рядом. Я даже сейчас помню - это было воскресенье, мною потрачен почти целый рабочий день. А ты все свое глаголишь. Тесты показали что работает Лайк одинаково. Ты просто не можешь на Линукс поставить два экземпляра рядом, научись, поставь и проверь, не умеешь в Линуксе - скачай в Вайне uninstall версии и запускай демон "mysqld --console". Самое интересное, что когда у меня сломался индекс в 5.7 - работало также как и у тебя на сломаном индексе в 5.5 (или 5.6, что там ранее у тебя стояло). Я тебе явно показал, Что же это Такое - работа индекса, на примере WERE like "финд%" т.е. поиск с начала строки (выполнение почти мгновенно) и like "%финд% (~ >3 сек). 3 секунды - это отсутствие работы индекса. В плане просто как бы показывается что он используется и все. То же время выполнения было и в 5.5 (без указания использования индекса в плане). Это факты, я не считаю это спором. В ветке Оракла (там это действительно работает) попроси ребят сравнить время выполнения двух лайков - они тебе скажут, что есть на самом деле работа индекса
...
Рейтинг: 0 / 0
Найти часть значения, имея полное
    #39280675
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,
я брал таблицу 10лям строк в 5.6 и 5.7 построеную из csv и там и там
и сравнивал.
в 5.6 - отрабатывало 30-40 сек.
в 5.7 - 4-5сек.
причём в like задавал заведомо отсутствующее значение.
т.е. like шерстил все 10 лямов
выбор был where поле like '%xxx%'
и даже where поле like '%xxx%' and поле like '%xxx%' and поле like '%xxx%'
на 5.6 как я не пытался оптимизировать, править и пр. мне не удалось улучшить показатели.
я сужу по своим опытам. то, что в 5.7.++ много изменено и улучшено это точно.
авторучти, что это плохой запрос в смысле производительности, никогда не будет работать быстро, может работать только на маленьких таблицах, типа 10000 строк, поскольку не и использует индекс..

у меня есть пример https://github.com/JonHappy/Ex_ListBox.git реализации поиска по вводу символа.
(правда в оригинале используется websocket)
так вот при таком поиске в таблице из 28 000 строк задержки не чувствуется. нажатие на кнопку клавы - и отображается найденное с limit 15.
...
Рейтинг: 0 / 0
Найти часть значения, имея полное
    #39282228
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

Свои исследования я проделылвал на 2млн записей, подсчитав, что он у меня не помещается в память (на домашней ПК) и этого достаточно
http://dev.mysql.com/doc/refman/5.7/en/index-btree-hash.html 9.3.8 Comparison of B-Tree and Hash Indexes

Understanding the B-tree and hash data structures can help predict how different queries perform on different storage engines that use these data structures in their indexes, particularly for the MEMORY storage engine that lets you choose B-tree or hash indexes.

B-Tree Index Characteristics

A B-tree index can be used for column comparisons in expressions that use the =, >, >=, <, <=, or BETWEEN operators. The index also can be used for LIKE comparisons if the argument to LIKE is a constant string that does not start with a wildcard character. For example, the following SELECT statements use indexes:

SELECT * FROM tbl_name WHERE key_col LIKE 'Patrick%';
SELECT * FROM tbl_name WHERE key_col LIKE 'Pat%_ck%';
In the first statement, only rows with 'Patrick' <= key_col < 'Patricl' are considered. In the second statement, only rows with 'Pat' <= key_col < 'Pau' are considered.

The following SELECT statements do NOT use indexes :

SELECT * FROM tbl_name WHERE key_col LIKE '%Patrick%';
SELECT * FROM tbl_name WHERE key_col LIKE other_col;
там же НИЖЕ - при поисковой строке больше 3-х символов попадаем на непредсказуемый Алгоритм Turbo Boyer-Moore (а НЕ Индекс)
http://dev.mysql.com/doc/refman/5.7/en/index-btree-hash.html If you use ... LIKE '%string%' and string is longer than three characters , MySQL uses the Turbo Boyer-Moore algorithm to initialize the pattern for the string and then uses this pattern to perform the search more quickly.
...
Рейтинг: 0 / 0
Найти часть значения, имея полное
    #39282232
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,
а я на виртуалке (под неё 2гига) и в память помещалость все 10 лямов
...
Рейтинг: 0 / 0
Найти часть значения, имея полное
    #39282239
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,
у меня мои результаты меня устраивают.
проверены неоднократно. за выписки из доков спасибо.
меня интересует результат, а каким способом он достигается у mysql - мне по-барабану.
ещё раз :
4сек при скане всех 10 000 000 записей меня устраивает
на практике (по крайней мере моей) такое количество редко встретится.
на 28 000 для полной системы браузер-сервер/приложение-сервер/база-сервер/приложение-браузер задержка не видна.
...
Рейтинг: 0 / 0
Найти часть значения, имея полное
    #39282248
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

устраивает - это замечательно.
Только если это одиночный запрос и устраивает - это хорошо. А если к такому запросу приджойнить еще таблицу с таким псевдо использованием индекса - это будет крах системы.
Просто не надо вводить в заблуждение других, в 5-10 раз скорость в 5.7 возрасти не могла и т.д. Если так оказалось - это случайный факт
...
Рейтинг: 0 / 0
Найти часть значения, имея полное
    #39282263
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,
согласен, но в сравнении с 5.7--, результат заметный....
...
Рейтинг: 0 / 0
Найти часть значения, имея полное
    #39282271
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не исследована причина долгого выполнения запросов в предыдущих версиях - поэтому кажется очень заметно.
...
Рейтинг: 0 / 0
Найти часть значения, имея полное
    #39283591
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я бы добавил. знаете почему тормоза большие встечаются у систем? потому что, 10 програмистов сделали код, который выполняется по 4 секунды и их всех свой код устраивает. Не устраивает пользователя ждать 40 секунд.

ЗЫ
николай жуков, у мескл вашей версии есть фулстек индекс, заточенный под такие запросы.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Найти часть значения, имея полное
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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