1)结果只有一条是用SELECT TOP 1效率更低?
对于只有一条结果的查询,下面哪一种快:
SELECT TOP 1 * FROM tablename where id=@id
SELECT * FROM tablename where id=@id2)以下两种查询方式,那种更快:
SELECT * FROM [视图(table a 和b的视图)]
SELECT A.*,B.* FROM tablename A inner join tablename B on a.id =b.id

解决方案 »

  1.   

    1.  不好说, 用top 1 可能会导致不良的执行计划, 所以有可能效率会更低.
        关于这个问题, 可以参考我的blog
         http://blog.csdn.net/zjcxc/archive/2006/07/10/898861.aspx
      

  2.   

    SELECT * FROM [视图(table a 和b的视图)]
    SELECT A.*,B.* FROM tablename A inner join tablename B on a.id =b.id这两者执行都是一样的,不管是视图还是sql查询都会产生执行计划.
      

  3.   

    关于第一个问题,如果使用top 1可能要搜索整个表,
    不使用top 1也会搜索整个表以获取所有符合的记录。有没有办法达到top 1的效果却不需要搜索整个表?也就是找到第一条记录后就停止搜索返回结果
      

  4.   

    看了一下 zjcxc(邹建)blog
    我这执行分析top 1操作没什么区别
    特别是结果集比较大的时候,推荐用top操作
      

  5.   

    1)结果只有一条是用SELECT TOP 1效率更低?
    对于只有一条结果的查询,下面哪一种快:
    SELECT TOP 1 * FROM tablename where id=@id
    SELECT * FROM tablename where id=@id
     
    應該是 SELECT * FROM tablename where id=@id 快
    2)以下两种查询方式,那种更快:
    SELECT * FROM [视图(table a 和b的视图)]
    SELECT A.*,B.* FROM tablename A inner join tablename B on a.id =b.id
    應該是 SELECT * FROM [视图(table a 和b的视图)] 快
      

  6.   

    关于SELECT TOP 1 * 和 SELECT *我看到几种版本,各有说法。
    事实上在数据量非常大的时候,我想两者肯定有区别
    但不知道哪个更好