易截截图软件、单文件、免安装、纯绿色、仅160KB

SQLServer索引调优实践(1)

索引的重要性
数据库性能优化中索引绝对是一个重量级的因素,可以说,索引使用不当,其它优化措施将毫无意义。
聚簇索引
(Clustered Index)和非聚簇索引
(Non- Clustered Index)
最通俗的解释是:聚簇索引的顺序就是数据的物理存储顺序,而对非聚簇索引的索引顺序与数据物理排列顺序无关。举例来说,你翻到新华字典的汉字“爬”
那一页就是P开头的部分,这就是物理存储顺序(聚簇索引);而不用你到目录,找到汉字“爬”所在的页码,然后根据页码找到这个字(非聚簇索引)。
下表给出了何时使用聚簇索引与非聚簇索引:
动作
使用聚簇索引
使用非聚簇索引
列经常被分组排序


返回某范围内的数据

不应
一个或极少不同值
不应
不应
小数目的不同值

不应
大数目的不同值
不应

频繁更新的列
不应

外键列


主键列


频繁修改索引列
不应

聚簇索引的唯一性
正式聚簇索引的顺序就是数据的物理存储顺序,所以一个表最多只能有一个聚簇索引,因为物理存储只能有一个顺序。正因为一个表最多只能有一个聚簇索引,所以它显得更为珍贵,一个表设置什么为聚簇索引对性能很关键。
初学者最大的误区:把主键自动设为聚簇索引
因为这是SQLServer的默认主键行为,你设置了主键,它就把主键设为聚簇索引,而一个表最多只能有一个聚簇索引,所以很多人就把其他索引设置
为非聚簇索引。这个是最大的误区。甚至有的主键又是无意义的自动增量字段,那样的话Clustered index对效率的帮助,完全被浪费了。
刚才说到了,聚簇索引性能最好而且具有唯一性,所以非常珍贵,必须慎重设置。一般要根据这个表最常用的SQL查询方式来进行选择,某个字段作为聚簇索引,或组合聚簇索引,这个要看实际情况。
事实上,建表的时候,先需要设置主键,然后添加我们想要的聚簇索引,最后设置主键,SQLServer就会自动把主键设置为非聚簇索引(会自动根据情况选择)。如果你已经设置了主键为聚簇索引,必须先删除主键,然后添加我们想要的聚簇索引,最后恢复设置主键即可。
记住我们的最终目的就是在相同结果集情况下,尽可能减少逻辑IO。
我们先从一个实际使用的简单例子开始。
一个简单的表:
CREATE TABLE [dbo].[Table1](
  [ID] [int] IDENTITY(1,1) NOT NULL,
  [Data1] [int] NOT NULL DEFAULT ((0)),
  [Data2] [int] NOT NULL DEFAULT ((0)),
  [Data3] [int] N


相关文档:

sqlserver 上机练习题

 create database db
use db
go
create table course
(
 sno varchar(20),
 cno int ,
 Gmark int
)
insert into course values('20071513115',1,80)
insert into course values('20071513114',2,80)
insert into course values('20071513113',3,80)
insert into course values('20071513 ......

JDBC连接SQLServer出现的异常

 课程设计的第一步:
 用户登陆模块:就这个小模块把我整死了,出现的问题一个接着一个,最主要的就是数据库连接.
 
 question1.
 java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
 异常原因:没有导入导驱动包sqljdbc.jar.
 question2.
  ......

sqlserver 期中考试题

 create database DB
use DB
--专业表
create table major
(spno char(5) not null primary key,
 spname varchar(20) not null,
 pno char(2) )
--学生表
create table student
(sno char(7) not null primary key,
 sname varchar(20) not null,
 ssex char(2) not null,
 sag ......

sqlserver 中使用程序集Assembly

                               **在sqlserver中如果要使用一个程序集一般有如下注意事项 
一:打开sqlserver 的CLR支持
 
   &nb ......

Python连接SqlServer练习记录


import pymssql

#connect database
conn=pymssql.connect(host="192.168.1.28",user="boomink",password="boomink",
database="boomink")

cur=conn.cursor()

print '========================================'

cur.execute("exec Orders_GetTest1 @Valu ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号