创建一个表是这样的:查询优化
CREATE TABLE test (a INT(10), b char(10));
增加两个指标:
alter table test add key aa (a), add key bb (b);
插入一些行:
insert into test values (132,'logi');
insert into test values (322,'koko');
insert into test values (32,'kola');
等等
您可以使用少量的行进行测试但在我的应用程序将有1亿行的所以我要问是有道理的: 所以,让我们说,我想执行两个查询:
1) explain select * from test where b like "frif%";
2) explain select * from test where a like "32%";
第一个使用指数BB由于B是一个char,而第二个不使用索引aa,因为a只是一个INT(我把它当作char!)。 我怎样才能使第二个查询作为第一个执行和搜索像“some_number%”的数字,并使范围类型的查询,而不是所有(如解释显示)。
INT被转换成字符串,这就是为什么指数不工作。 –
也许一个基于函数的索引将其转换为字符数据。从而创建引擎可能使用的索引。 – xQbert
xQbert,我试着做你用CAST函数建议的东西,但是像这样:(解释)select * from test where cast(a as CHAR)like“32%”;不工作! –