我有一个二进制列索引表。使用观察非常慢的查询,其中在MySQL 5.0.45上使用binary_column = x'....'条件
创建测试表,如
CREATE TABLE `test` (
`h` binary(20) NOT NULL,
`a` int(10) default NULL,
PRIMARY KEY (`h`)
) ENGINE=MyISAM;
然后在10k行的几次插入之后运行测试查询
SELECT count(a) FROM test where binary h = x'...';
or
SELECT count(a) FROM test where binary h = unhex('...');
观察行数增加的这些查询所花费的时间的线性增加。索引已创建(主键!):我看到1Mb的数据文件和1.5Mb的索引文件。 说明命令确认未使用主键:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE test ALL null null null null 40014 Using where
如何让MySQL使用二进制列的索引?