Есть таблица, где хранятся записи о товарах, всего товарах около 10'000'000 — количество может вырасти до 20'000'000.
Вывод работает нормально, но заказчик хочет еще админку к этой базе для анализа товаров, поставщиков и прочего — это будет выглядеть как фильтры для каждого поля бд.
Запрос на создание таблицы:
CREATE TABLE `suppliers_store` (<br/>
`id_suppliers_store` int(11) NOT NULL AUTO_INCREMENT,<br/>
`id_suppliers` int(11) NOT NULL,<br/>
`dt` date NOT NULL,<br/>
`name` varchar(255) NOT NULL,<br/>
`code` varchar(255) NOT NULL,<br/>
`price` double NOT NULL,<br/>
`code_suppliers` varchar(255) NOT NULL,<br/>
`count` int(11) NOT NULL DEFAULT '0',<br/>
`producer` varchar(255) NOT NULL,<br/>
`weight` varchar(255) NOT NULL,<br/>
PRIMARY KEY (`id_suppliers_store`),<br/>
KEY `NewIndex1` (`id_suppliers`),<br/>
KEY `NewIndex2` (`dt`)<br/>
) ENGINE=MyISAM DEFAULT CHARSET=utf8
Вот примерный запрос, с условиями, которые может сгенерировать фильтр:
select ss.*, s.delivery<br/>
from suppliers_store as ss<br/>
join suppliers as s on ss.id_suppliers = s.id_suppliers<br/>
where (ss.dt >= '2010-02-01 00:00:00' and ss.dt <= '2011-02-01 23:59:59') and <br/>
(ss.name like '%панель%' or ss.code like '%панель%') and<br/>
(ss.price > 1000) and<br/>
(ss.count > 0)<br/>
LIMIT 50
Собственно эти фильтры и заставляют mysql каждый раз шерстить всю базу, индексы по полям, как я понимаю, особо не помогут.
Раньше опыта работы с такими объемами не было, насколько mysql подходит для этих целей?
Как можно увеличить скорость поиска по табличке?