我有800萬條記錄,看起來像這樣的表:正確的索引
CREATE TABLE `bdp_dosis` (
`ID_INSTITUTION` varchar(4) NOT NULL default '',
`ID_SERVICE` char(2) NOT NULL default '',
`SECUENCIAL` char(3) NOT NULL default '',
`TYPE` char(1) NOT NULL default '',
`DATE_LECTURA` varchar(8) NOT NULL default '',
`ID_TARJETA` varchar(9) default NULL,
`DATE_ASIGNACION` varchar(8) NOT NULL default '',
`DOSIS_1` int(11) default NULL,
`DOSIS_2` int(11) default NULL,
`COMMENT` char(1) NOT NULL default '',
`CATEGORIA` char(2) default NULL,
`TYPE_TRABAJO` char(2) default NULL,
PRIMARY KEY (`ID_INSTITUTION`, `ID_SERVICE`,`SECUENCIAL`, `TYPE`, `DATE_LECTURA`, `DATE_ASIGNACION`, `COMMENT`)) ENGINE=MyISAM
表的設計不能更改,但有些指標將使它與此執行不那麼糟糕查詢:
select d.ID_SERVICE,d.SECUENCIAL,d.TYPE,d.DATE_LECTURA,d.DATE_ASIGNACION,d.DOSIS_1,d.DOSIS_2,d.COMCOMMENT
from bdp_dosis d
where d.ID_INSTITUTION='46C7'
and d.DATE_asignacion>'20080100'
and d.DATE_asignacion<'20081232' and locate(d.COMMENT,'WQ')<>0
order by d.ID_SERVICE,d.SECUENCIAL,d.TYPE,d.fecha_lectura desc
EXPLAIN命令說:
id select_type table type possible_keys key key_len ref
1 SIMPLE d ref PRIMARY PRIMARY 4 const
rows Extra
254269 Using where; Using filesort
我試圖把一個索引ID_INSTITUTION-ID_SERVICE
沒有大的結果。任何想法?
或者,你知道,一個'DATE'。 – chaos 2009-08-21 11:48:56
@chaos:可能是智能日期鍵。一直在數據倉庫中使用這些。 – Eric 2009-08-21 11:50:20
日期類型是完美的,但這不是我的決定。 – jcasalruiz 2009-08-21 11:54:43