Условие с датами

Mosik

Новичок
Условие с датами

У меня есть таблица скидок. В ней есть два поля: дата начала дейтсвия скидки и дата окончания дейтсвия скидки.
Код:
CREATE TABLE `pas_products_codes_special` (
`id` mediumint(6) unsigned NOT NULL auto_increment,    
`products_code` mediumint(6) unsigned NOT NULL default '0',    
`prop_date` date NOT NULL default '0000-00-00',    
`prop_date_end` date NOT NULL default '0000-00-00',    
`currencies_id` tinyint(2) unsigned NOT NULL default '0', 
`discount` tinyint(2) unsigned NOT NULL default '0',    
`special` float unsigned NOT NULL default '0',    
PRIMARY KEY  (`id`),    
KEY `idx_products_code` (`products_code`),    
KEY `idx_prop_date` (`prop_date`,`prop_date_end`)  
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 ROW_FORMAT=DYNAMIC;
Чтобы получить скидки на конкретную дату я пишу условие
Код:
WHERE special.prop_date<='2005-08-30' and special.prop_date_end>='2005-08-30'
Но в данном случае MySQL перебирает все записи в таблице.
Можно как-то оптимизировать?

Если кто скажет "смотри explain", то там я уже смотрел.
 

svetasmirnova

маленький монстрик
Ну что-то такое:
table_name [[AS] alias] [[USE INDEX (key_list)] | [IGNORE INDEX (key_list)] | FORCE INDEX (key_list)]]
В версии MySQL 3.23.12 можно указывать, какие именно индексы (ключи) MySQL должен применять для извлечения информации из таблицы. Это полезно, если оператор EXPLAIN (выводящий информацию о структуре и порядке выполнения запроса SELECT), показывает, что MySQL из списка возможных индексов выбрал неправильный. Если нужно. чтобы для поиска записи в таблице применялся только один из возможных индексов, следует задать значение этого индекса в USE INDEX (key_list). Альтернативное выражение IGNORE INDEX (key_list) запрещает использование в MySQL данного конкретного индекса. В MySQL 4.0.9 можно также указывать FORCE INDEX.
А что с ней ещё можно сделать?
 
Сверху