@GoldCode

MySql постарения SELECT (fulltext) (index)?

Как правильно сделать селект. Для Полнотекстовых индексов использую match() against(), а как сделать ещё выборку по другим полям, что бы учитывался обычный индекс ?
Сначала делать запрос по обычным полям индекса, а потом выборку из результата по fulltext
Вот пример запроса

`order_number`= "%000212%"
AND 
(`order_data` LIKE "%рыба%" OR `order_data` LIKE "%селед%" OR `order_data` LIKE "%акула%")
AND 
(`order_geocode_list` LIKE '%"122"%' OR `order_geocode_list` LIKE '%"125"%')
AND 
`order_public_date` > '2016-05-07'
AND
`order_total_price` > 100

Какие правильные индексы добавить? Полнотекстовый индекс не вяжеться с TYPE date.
Обычный индексы не вяжуться с TYPE text.

85617366bb8a49bf88909a8c1b23a148
красным поисковые поля
  • Вопрос задан
  • 188 просмотров
Пригласить эксперта
Ответы на вопрос 2
@SharuPoNemnogu
не язык плохой, программисты такие...
в первых трех условиях индекс не будет использоваться, так как в условии % с обеих сторон
остается order_public_date и order_total_price, можно попробовать составной индекс, только в том порядке, в котором они идут в запросе
Ответ написан
@GoldCode Автор вопроса
fd57620cbc944d31be9e24922aa79b57

полнотекстовые индексы
(order_data) (order_geocode_list)

обычный составной индекс
(order_public_date, order_number, order_total_price)

поправьте если я не прав?

explain:
e9c0368cff1a4b67ad0b434fe8ab1aa3.png
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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