日期:2014-05-18  浏览次数:20408 次

关于SQL读取数据效率的一点小问题
示例代码如下:

dim ID=request("ID")

语句1: sql=" select * from [Sheet] where ID="&ID&" "

语句2: sql=" select top 1 * from [Sheet] where ID="&ID&" "

--------------------------------

问题1:两个sql语句读取数据的效率有多大差别?
问题2:如果sheet表的数据超过1000万条,两个sql语句读取数据的效率有多大差别?

谢谢!

------解决方案--------------------
* 的话一般都走扫描了。 差异就是数据量问题。
效率差不多,时间上完全取决于*的列多少,还有行数。
------解决方案--------------------
语句1返回所有符合条件的记录,语句2只返回第一条符合条件的记录,
语句2速度比1要快
------解决方案--------------------
语句2只返回一笔,找到一笔,就结束查找,所以比语句1要快
------解决方案--------------------
具体情况需要看查询计划 需要看是否利用到索引

如果利用到了 基本都是秒杀。
------解决方案--------------------
如果ID为唯一的话,并且在ID上建立了索引,那么第一个比第二个快一点,因为少排次序。但是只有一条返回结果影响不会大,基本上秒杀。
------解决方案--------------------
效率取决你是否正确索引,表结构等