У меня проблема с медленным запросом, я делаю "простой" выбор ... я не понимаю, в чем проблема ... это большая таблица ... но это простой запрос ..
Таблицы:
business: (1.000.000 reg)
id (INDEX PRIMARY INT(11) UNSIGNED)
active (INDEX TINYINT(1))
products: (32.000.000 reg)
id (INDEX PRIMARY INT(11) UNSIGNED)
business_id (INDEX INT(11) UNSIGNED)
offer_start (INDEX INT(12) UNSIGNED) (timestam unix)
offer_end (INDEX INT(12) UNSIGNED) (timestamp unix)
price_offer (VARCHAR(10)) (price with decimals)
active (INDEX TINYINT(1))
business.id, products.id, products.offer_start и products.offer_end равны INDEX (разделены)
Когда я делаю это:
SELECT SQL_NO_CACHE * FROM products
LEFT JOIN business ON business.id = products.business_id
WHERE
(business.active = '1' AND business.paylimit > 1314029906)
AND
(products.active = '1' AND products.offer_start < 1314029906 AND products.offer_end > 1314029906 AND products.price_offer > 0)
LIMIT 0,10
Взять 21 секунду.
Проблема заключается в следующем: products.offer_start < 1314029906 AND products.offer_end > 1314029906
требуется ~ 20 секунд, чтобы дать мне результаты
Можно ли сделать этот запрос, фильтруя другие формы для ускорения?