首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sqlserver2005查询语句的性能有关问题

2012-04-06 
sqlserver2005查询语句的性能问题在网上查询有关查询语句的性能问题,真是众说纷纭啊!我有以下几个问题:1.

sqlserver2005查询语句的性能问题
在网上查询有关查询语句的性能问题,真是众说纷纭啊!我有以下几个问题:
1.关于分页的我们用的是
 

SQL code
SELECT * FROM (SELECT TOP 100 *, ROW_NUMBER() OVER (order by id) AS Supesoft_RowNo            FROM BaseArchives where isdelete=0 and status<>51  ) AS TempSupesoftPageTable            WHERE TempSupesoftPageTable.Supesoft_RowNo > 90 

查了下资料,有的说是效率最差,有的说还可以,想问下那种分页方式效率最高?
2.多表查询问题
第一种:
SQL code
select b.* from BaseArchives b,E_Fence e where b.E_Fence=e.ID and b.isdelete=0 and b.status<>51 order by b.id desc

第二种:
SQL code
select b.* from BaseArchives b where exists(select e.ID from E_Fence e where b.E_Fence=e.ID) and b.isdelete=0 and b.status<>51 order by b.id desc

第三种:
SQL code
select b.*,e.* from BaseArchives b inner join E_Fence e on b.E_Fence=e.ID where b.isdelete=0 and b.status<>51 order by b.id desc

总的是查询出9346条数据,差不到表里也就1W多条数据,我测的结果是第一和第二种差不多700-850ms,而第三种是2000多ms
不管那种1W多条数据好像都有点慢?想找解决方案
3.我想知道有哪些查询的关键字是影响查询速率的?
在线等答案啊

[解决办法]
多表查询inner join 肯定比exists 效率高
可以在表上加上索引提高查询效率
[解决办法]
第三种方法比较快
[解决办法]
1,你写的分页很好
2,第一种和第三种其实差不多,第二种exists方式查询不是很稳定,看你内外表的数据分布情况
3,关键字不会影响效率,用错了才会影响效率
[解决办法]
分页ROW_NUMBER()OVER()的效率比较高

多表连接查询 你的方法1,3其实是一样的效率,比exists子查询高 但是只限于inner join 


如果用left join 结果都可能不一样 没有可比性
[解决办法]
1.把你找到的分页程序统统运行一下,哪个最快,它的效率就最高.
2.这三种查询语句差别不大,要提高速度,试着在连接列和条件列上建索引.
3.每个关键字都影响速率. where 最甚,在select 中加子查询更差.

热点排行