WEB开发网
开发学院数据库MSSQL Server 海量数据库查询优化及分页算法 阅读

海量数据库查询优化及分页算法

 2008-08-30 09:56:49 来源:WEB开发网   
核心提示: selectgid,fariqi,neibuyonghu,reader,titlefromTgongwenwherefariqi>'2004-1-1'andfariqi<'2004-6-6'用时:3280毫秒4 、日期列不会因为有分秒的输入而减慢

selectgid,fariqi,neibuyonghu,reader,titlefromTgongwenwherefariqi>'2004-1-1'andfariqi<'2004-6-6'

用时:3280毫秒

4 、日期列不会因为有分秒的输入而减慢查询速度

下面的例子中,共有100万条数据,2004年1月1日以后的数据有50万条,但只有两个不同的日期,日期精确到日;之前有数据50万条,有5000个不同的日期,日期精确到秒。

selectgid,fariqi,neibuyonghu,reader,titlefromTgongwenwherefariqi>'2004-1-1'orderbyfariqi

用时:6390毫秒

selectgid,fariqi,neibuyonghu,reader,titlefromTgongwenwherefariqi<'2004-1-1'orderbyfariqi

用时:6453毫秒

(五)其他注意事项

“水可载舟,亦可覆舟”,索引也一样。索引有助于提高检索性能,但过多或不当的索引也会导致系统低效。因为用户在表中每加进一个索引,数据库就要做更多的工作。过多的索引甚至会导致索引碎片。

所以说,我们要建立一个“适当”的索引体系,特别是对聚合索引的创建,更应精益求精,以使您的数据库能得到高性能的发挥。

当然,在实践中,作为一个尽职的数据库管理员,您还要多测试一些方案,找出哪种方案效率最高、最为有效。

二、改善SQL语句

很多人不知道SQL语句在SQL SERVER中是如何执行的,他们担心自己所写的SQL语句会被SQL SERVER误解。比如:

select*fromtable1wherename='zhangsan'andtID>10000

和执行:

select*fromtable1wheretID>10000andname='zhangsan'

一些人不知道以上两条语句的执行效率是否一样,因为如果简单的从语句先后上看,这两个语句的确是不一样,如果tID是一个聚合索引,那么后一句仅仅从表的10000条以后的记录中查找就行了;而前一句则要先从全表中查找看有几个name='zhangsan'的,而后再根据限制条件条件tID>10000来提出查询结果。

上一页  5 6 7 8 9 10 

Tags:海量 数据库 查询

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接