Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.142.210.100] |
|
Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ. |
Сообщ.
#1
,
|
|
|
Добрый день.
Есть поле в таблице: c_number CHAR (20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL Для него создан индекс FULLTEXT. Делаю поиск по нему поиск. Текст в нем латиницей. Если делаю поиск с начала строки, то есть если запрос такой: WHERE MATCH (c_number) AGAINST ('ABCD*' IN BOOLEAN MODE) То отдает правильную выборку. Но если поиск не с начала строки: WHERE MATCH (c_number) AGAINST ('*BCD*' IN BOOLEAN MODE) То отдает пустую выборку. Текущий движок таблицы INNODB, читал, что на нем может не работать, менял на MYISAM, результат тот же. Версия mysql 5.7. В чем может быть проблема? Уже кучу всего перепробовал, ничего не помогает. |
Сообщ.
#2
,
|
|
|
WHERE c_number LIKE '%BCD%'
|
Сообщ.
#3
,
|
|
|
Gonarh
LIKE не для FULLTEXT, а для BETREE. Плюс, если с помощью LIKE делать выборку не с начала строки, то он не использует индексы и поиск занимает очень много времени. |
Сообщ.
#4
,
|
|
|
Gonarh
Беру свои слова обратно) Хоть и это и перечет документации, но на таблице под движком InnoDB, с индексом FULLTEXT, для поля CHAR, LIKE '%ABC%' работает на ура! |