makcumyc
Новичок
Оптимизация поискового запроса!
Всем привет!
Возникла проблема с оптимизацией. Есть запрос:
[query] =>
[time] => 0.611722946167
На который уходит от 0.005 до >25 секунд. Не могу разобраться, почему такие скачки и что с этим делать.
Думал проблема в том, что используются 3 таблицы, но хотя, когда я делал такой запрос:
[query ]
Результат был примерно такой же - то запрос проходил быстро, то затягивался более чем на 25 секунд, пробовал соединить MATCH запрос в 1, а не как сейчас - 2, но это тоже не помогает .
У самого поля “TXT” index FULLTEXT. Товаров > 1 миллиона. Подскажите как оптимизировать запрос. Одно время предлагалось поставить Сфинкс, но возможно ли как-то без него обойтись, ведь mysql, я думаю, спокойно может обрабатывать данные больше миллиона. Может как-то разбить данные на партиции? Хотя я тоже пытался это сделать, но не к чему путному это не привело. Поле “TXT” имеет примерно такие данные внутри:
######################
1) “Nokia 3310”
2) “Apple Iphone 3G”
3) “Apple Iphone 3G 8G”
4) “Apple Iphone 3G 16G”
5) “Nokia 12345”
N) …
######################
и если я в поиске вобью “Appl Iphon” – я должен получить, что по такому запросу найдены 2-ой, 3-ий, 4-ый вариант записей. Подскажите, как быть с оптимизацией?
Всем привет!
Возникла проблема с оптимизацией. Есть запрос:
[query] =>
PHP:
select count(p.products_model)
from products p , shop_cat c , shop s
where s.id=c.shop_id and c.id=p.shop_cat_id and p.products_price>0 and
MATCH(txt) AGAINST('Moulinex*' IN BOOLEAN MODE ) and
MATCH(txt) AGAINST('BKA347*' IN BOOLEAN MODE )
На который уходит от 0.005 до >25 секунд. Не могу разобраться, почему такие скачки и что с этим делать.
Думал проблема в том, что используются 3 таблицы, но хотя, когда я делал такой запрос:
[query ]
PHP:
select product_id
from products
where
MATCH(txt) AGAINST('Moulinex*' IN BOOLEAN MODE ) and
MATCH(txt) AGAINST('BKA347*' IN BOOLEAN MODE )
У самого поля “TXT” index FULLTEXT. Товаров > 1 миллиона. Подскажите как оптимизировать запрос. Одно время предлагалось поставить Сфинкс, но возможно ли как-то без него обойтись, ведь mysql, я думаю, спокойно может обрабатывать данные больше миллиона. Может как-то разбить данные на партиции? Хотя я тоже пытался это сделать, но не к чему путному это не привело. Поле “TXT” имеет примерно такие данные внутри:
######################
1) “Nokia 3310”
2) “Apple Iphone 3G”
3) “Apple Iphone 3G 8G”
4) “Apple Iphone 3G 16G”
5) “Nokia 12345”
N) …
######################
и если я в поиске вобью “Appl Iphon” – я должен получить, что по такому запросу найдены 2-ой, 3-ий, 4-ый вариант записей. Подскажите, как быть с оптимизацией?