where 条件并不是越多越好
来源:互联网 发布:嘉兴nit软件培训 编辑:程序博客网 时间:2024/05/16 07:39
今天在写一个sql时,遇到这么个问题,where条件多写了几个,结果结果执行计划显得很槽糕:
表A 有字段 heard_id,class_no,bath_no,class_name
表B有字段 heard_id,class_no,bath_no,class_value
首先A表与B表是通过heard_id相关联,首先得承认这2个表设计有点问题,不满足范式的要求,有冗余的信息,如class_no,bath_no,结果我在写写sql时写成这个样子:
select a.class_no,a.batch_no,a.class_name,b,class_value
from a,b
where a.heard_id = b.heard_id
and a.class_no = b.class_no
and a.batch_no = b. batch_no
and a.class_no = 10;
结果执行计划显示,A表在关联B表的时候,并没有用heard_id这个字段的索引,而是选择用了class_no,batch_no的联合索引,结果导致这个sql跑了N久没跑出来,后来稍微改了下,把class_no,batch_no条件拿掉了,变成
select a.class_no,a.batch_no,a.class_name,b,class_value
from a,b
where a.heard_id = b.heard_id
and a.class_no = 10;
这样写执行计划就选择了heard_id这个字段的索引,很快就查询出来了,其实2个表关联通过heard_id就足够了,这也许是很多开发人员的开发习惯,只要可以,就把已知的所有条件都写在where字句中,以确保万无一失,其实有时候这样做会适得其反,大家要注意了。。。。。。- where 条件并不是越多越好
- where条件
- 多where条件查询
- linq 追加Where条件
- WHERE条件和排序
- oracle 当中where条件
- 数据where条件过滤
- Yii2-条件Where使用说明
- 浅析Mysql Where条件
- mongodb的where条件
- where条件语句
- Thinkphp的where条件
- on条件与where条件的区别
- LINQ 多条件查询 where 条件组建
- on条件与where条件的区别
- 左外连接 where条件 on条件
- on条件与where条件的区别
- on条件与where条件的区别
- jQuery写日历
- Word2010邮件合并(附带照片)
- 备份一下FFT帖子
- BP 神经网络
- 我是不是被“小三”了?
- where 条件并不是越多越好
- jQuery全选、取消全选、反选
- 产品能力框架图
- 安装qq2013,个人文件夹保存位置无效
- ubuntu 13.04 取消屏保 [code]
- Linux fc命令
- [更新]nexus s刷android4.4(AOSP 4.4.2 Mod)
- 什么大牛不大牛,先A500题再说吧
- 神经网络编程