兄弟,我的這個語句不一樣的,可能因為環境不同; 但是sql為什麼會采用如此差的查詢計劃,另外想知道如何強行按照某個索引執行?
解决方案 »
- 求教一个关于 DISTINCT 和 order by id失效的问题
- 题库的数据库结构设计的问题
- 請問如何編寫這個 DELETE 語句﹖
- 超超超幼稚的问题,但是大家请帮帮我。
- 小问题:有一批EXCEL表格要导入到SQL Server表,如z1.xls,z2,xls...,我用import data一个个的太慢了,有没有好的办法?
- 怎么学SQL SERVER?
- 存储过程的修改
- 兼容性问题,SQL7.0和SQL2000
- 100分求助,大家帮帮忙呀!!!!!!!!!!
- 关于windows排序规则和Sql排序规则的问题。
- 存储过程中临时表无法创建,着急
- ******************帮我看看 如何处理
exec('select a.* from a left join b on a.id=b.id left join on c on a.t1=c.t1
where a.d>='''+@start+''' and a.d<='''+@end+'''')
说: 為什麼一樣的語句,查詢策略卻不一樣?
答: sql是一种声明性语言,一个sql语句指定的是所要求的结果,而不是如何读取它们,具体如何读取由sql在生成执行计划时决定,这样的话,几个等价的sql语句可以得到一个特定的结果集,而每一条语句执行时都会有不同的成本和消耗时间。
答: 索引是由一系列存储在磁盘上的索引项组成的。一个索引项对应于磁盘上的一行,我们可以将索引项看作一个由两列组成的数据表。其中一列是索引键,由行中某些列的值串接组成,第二列是行指针,指向行所在的磁盘位置。
优化器决定查询所采用的策略,当它判定没有合适的索引来执行一个sql语句以满足优化器目标时,将进行全表扫描以执行该sql语句,一般而言,表扫描将涉及很多的物理I/O。当表中数据相对较多时,会严重影响查询的速度。
采用上面的指定索引沒有用,
-----------
我如何讓sql按照策略 A 來查詢呢?
SELECT *
FROM tablename with (index(indexname))
where 条件