WEB开发网
开发学院数据库MSSQL Server SQL开发中容易忽视的一些小地方(五) 阅读

SQL开发中容易忽视的一些小地方(五)

 2009-01-15 10:19:30 来源:WEB开发网   
核心提示:背景:索引分类:众所周知,索引分为聚集索引和非聚集索引.索引优点:加速数据查询.问题:然而我们真的清楚索引的应用吗?你写的查询语句是否能充分应用上索引,或者说你如何设计你的索引让它更高效?经历:以前本人只知道索引的好处,但是是否能够真正让它发挥作用,并无太多理论,为些本人做了些DEMO,来简单说明下什么情况下才能充分利

背景:

索引分类:众所周知,索引分为聚集索引和非聚集索引.

索引优点:加速数据查询.

问题:然而我们真的清楚索引的应用吗?你写的查询语句是否能充分应用上索引,或者说你如何设计你的索引让它更高效?

经历:以前本人只知道索引的好处,但是是否能够真正让它发挥作用,并无太多理论,为些本人做了些DEMO,来简单说明下什么情况下才能充分利用索引.

案例:

这里建立一个学生表:有如下字段,此时表中没有建立任何索引.CREATE TABLE [dbo].[student](
  [ID] [int] IDENTITY(1,1) NOT NULL,--学生ID
  [sUserName] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,--学生姓名
  [sAddress] [varchar](200) COLLATE Chinese_PRC_CI_AS NULL,--学生地址
  [classID] [int] NULL,--学生所属班级ID
  [create_date] [datetime] NULL CONSTRAINT [DF_student_create_date] DEFAULT (getdate()) --入校时间
) ON [PRIMARY]

业务需求:

查询班级ID为9的所有学生的姓名和地址.

情况一:

--字段没有建立任何索引

select sUserName,sAddress from student

where classID=9

执行计划如下图:

SQL开发中容易忽视的一些小地方(五)

结论:在没有任何索引的情况下,查询会选择全表扫描.

情况二:

给ID自增列创建一个聚集索引,我们很多情况下都是这样默认的,主键上就是聚集索引.同样的查询,不同的查询计划,发现此时虽然在输出列和条件中没有ID,但是查询选择了聚集查询.

1 2 3  下一页

Tags:SQL 开发 容易

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