sql优化有很多学问,其中建立索引是提升查询速度很重要的一条;
然后我就心血来潮测试了下;下面是表的结构,总共12.1万条的样子,一开始我没有添加索引,后面分别给id和city添加了唯一hash索引与普通的btree索引,然后大致试了下;
--唯一主键未建立索引0.012
SELECT * from house_info where id=3000;
--唯一主键建立HASH索引0.009
SELECT * from house_info where id=3000;
--唯一主键未建立索引0.383
SELECT * from house_info where id>3000;
--唯一主键建立HASH索引0.394
SELECT * from house_info where id>3000;
--0.164
SELECT * from house_info where city='保定';
--没建立索引0.045
SELECT id,city from house_info where city='保定';
--建立索引0.0002
SELECT id,city from house_info where city='保定';
--0.010
SELECT * from house_info where city='保定';
对于已经是唯一主键的id来说建立hash索引可以微微的增加查询速度;同时需要注意hash并不支持范围查询,
对于非唯一索引,从0.164s提升到了0.01s提升了16倍;效果显著;
与此同时,尝试只查询索引部分字段,发现速度上升到了惊人的0.0002s;像类似用户角色关联表,角色权限关联表;都是可以用的,简直屌的不行...