+ -
当前位置:首页 → 问答吧 → 如果有5百万左右的数据量~那下面的sql那个比较快啊?

如果有5百万左右的数据量~那下面的sql那个比较快啊?

时间:2011-06-26

来源:互联网

一个表有五5个字段

id(pk) xh(学号,虽然不是pk但也是全表唯一的) xb(性别) bj(班级)


sql1:select * from xh = '123'



sql2:select * from xh = '123' and xb='男' and bj='11'


问sql1和sql2那个更快些

其中xh、xb、bj都分别有index

xh、xb、bj联合还有一个index

作者: zlyperson   发布时间: 2011-06-26

由于xh是具有唯一性,很明显,SQL1是首选。
SQL查询的基本原则之一就是使用最有效的过滤条件,这样可以保证读取更少的数据来完成查询。
另外,像xb这样的列就没有必要创建索引了,性别一般情况下只有男,女两个值,很显然会有大量的重复数据列。这样的索引是没有任何用处的,MySQL不会使用它,只会占用更多的空间。
具有大量重复性数据的字段即使频繁出现在Where中也不要创建索引。

作者: canyingwushang   发布时间: 2011-06-26

引用楼主 zlyperson 的回复:
一个表有五5个字段

id(pk) xh(学号,虽然不是pk但也是全表唯一的) xb(性别) bj(班级)


sql1:select * from xh = '123'



sql2:select * from xh = '123' and xb='男' and bj='11'


问sql1和sql2那个更快些

其中xh、xb、bj都分别有index

x……



mysql没有位图索引吗?

作者: zlyperson   发布时间: 2011-06-26

xh(学号,虽然不是pk但也是全表唯一的)

所以一样快。

作者: ACMAIN_CHM   发布时间: 2011-06-26

引用 2 楼 zlyperson 的回复:

引用楼主 zlyperson 的回复:
一个表有五5个字段

id(pk) xh(学号,虽然不是pk但也是全表唯一的) xb(性别) bj(班级)


sql1:select * from xh = '123'



sql2:select * from xh = '123' and xb='男' and bj='11'


问sql1和sql2那个更快些

其中……

Mysql所有的引擎支持索引加起来四种:
B-Tree 
R-Tree 
Hash索引 
FullText索引

作者: canyingwushang   发布时间: 2011-06-26

sqlserver也没有位图索引

作者: rucypli   发布时间: 2011-06-26

相关阅读 更多

热门下载

更多