关于SQL语句(10分)

  • 主题发起人 xuefeiyang
  • 开始时间
X

xuefeiyang

Unregistered / Unconfirmed
GUEST, unregistred user!
比如说:
select * from table1
where a=1 and b=1
问题是'where a=1 and b=1'与'where b=1 and a=1'在查询速度上会不会有不同?
换一种问法就是执行SQL语句时是每一条数据都进行判断'a=1 and b=1'还是先对整个表进行
判断a=1,进行一定的排除后再判断剩下的数据b=1?
 
哪个字段建立索引,哪个字段的检索速度就相对快很多
 
select * from table1 where a=1 and b=1
实际上先分析b=1
oracle是从右到左编译的
所以应该将有索引的条件放在最右边(返回数据最少的或响应时间最少的表达式放在最右边)
 
我用的是SQL server
因为字段很多,所以不可能都建索引
 
同意楼上的。
Oracle 数据库中的查询是应该将返回记录数最小的条件(强条件)放在最右边,
相对返回记录较多的条件(弱条件)往左边放。
可以优化查询
 
我用的是SQL server
到底是逐条判断还是先判断第一条排除一部分数据再判断第二条呢?
 
MSSQL是从右到左还是从左到右?
 
同意xj_liyq的看法

把条件约束最大的放到最前面
 
我用的是SQL server
到底是逐条判断还是先判断第一条排除一部分数据再判断第二条呢?
 
SQL SERVER中系统会对SQL语句自动优化的
 
自动优化?
那就是说可以随意编写SQL语句了?
 
其实速度差不多,若你要追求速度的话,就为重要的那项加上索引。
在SQL Server中索引很重要,但不要滥用。
 
我认为写在一个语句中快些,至于顺序我也不清楚。觉得现在计算机那么快,也没在意
 
关于SQL在前面的讨论中已经很多,你可以搜索一下,会有收获的!
 
这微小的差别就算在MSSQL的查询分析器里执行,
它所用的资源也是看不出有什么不同的啦!
 
不管是ORACLE还是SQL
都一样总是在执行完了强条件之后在其返回的数据集中再执行弱条件。
 

两种方法肯定有不同的,影响因素有如下两点:
1、看a、b两字段是否有索引,有索引的应放在前面
2、如果a=1太约有10000条,而b=1只有3条,则把b=1放在前面效率比较高
 
顶部