一个表有五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都分别有indexxh、xb、bj联合还有一个index
sql1:select * from xh = '123'和sql2:select * from xh = '123' and xb='男' and bj='11'
问sql1和sql2那个更快些其中xh、xb、bj都分别有indexxh、xb、bj联合还有一个index
解决方案 »
- 两个200w的表联合查询,如果有字符串相等的条件,我是不是要先查出来再程序判断字符串是不是相等
- 这两个的SQL的效率谁好点?
- InnoDB 并发执行相同sql(delete) 貌似死锁
- windows环境下用pgadmin备份的数据库文件 linux用不了?(急,在线等)
- vc 下ado 连接mysql问题
- 数据表中有一个日期时间字段,如何查出和当前时间相比超过两个小时的记录?
- 关于my.ini的问题,请大侠解答。
- 用sql语句如何得到某个数据库连接下的所有用户表
- mysql创建数据表出现问题
- 20万人同时在线的游戏数据库要如何设计
- mysql查询操作
- 高分求深入学习 mysql 的视频,不要基础的!!!
SQL查询的基本原则之一就是使用最有效的过滤条件,这样可以保证读取更少的数据来完成查询。
另外,像xb这样的列就没有必要创建索引了,性别一般情况下只有男,女两个值,很显然会有大量的重复数据列。这样的索引是没有任何用处的,MySQL不会使用它,只会占用更多的空间。
具有大量重复性数据的字段即使频繁出现在Where中也不要创建索引。
B-Tree
R-Tree
Hash索引
FullText索引
原因和1楼一样。