设置索引的注意事项 · SQL Server2000在执行查询时,查询优 化器会对可用的数据检索方法的成本进 行评估,从中选择最有效的方法。因此 只要数据表中存在索引, SQL Server 就会使用索引进行查询。若不使用索引, SQL Server将执行完整表扫描。若使用 索引, SQL Server将会查找查询所需 的行的存储位置,并直接提取出所需的 行
11 设置索引的注意事项 • SQL Server 2000在执行查询时,查询优 化器会对可用的数据检索方法的成本进 行评估,从中选择最有效的方法。因此, 只要数据表中存在索引, SQL Server 就会使用索引进行查询。若不使用索引, SQL Server 将执行完整表扫描。若使用 索引, SQL Server 将会查找查询所需 的行的存储位置,并直接提取出所需的 行
在考虑是否为数据表中的某个列创建索引时, 应该考虑按列进行查询的方式。若需要对该列 进行如下查询,则可以考虑在该列上创建索引: ·1、需要在该列搜索符合特定搜索关键字的行, 即精确匹配查询。 2、需要在该列搜索关键字值属于某一特定范 围值的行,即范围查询 ·3、在表 table1中搜索根据联接谓词与表 table2中的某个行匹配的行。 4、搜索已定义了 foreign key约束的两个表之 间匹配的行。 5、使用1ike比较进行查询,且模式以特定的 字符串如:a%开头。等等 12
12 • 在考虑是否为数据表中的某个列创建索引时, 应该考虑按列进行查询的方式。若需要对该列 进行如下查询,则可以考虑在该列上创建索引: • 1、需要在该列搜索符合特定搜索关键字的行, 即精确匹配查询。 • 2、需要在该列搜索关键字值属于某一特定范 围值的行,即范围查询。 • 3、在表table1中搜索根据联接谓词与表 table2中的某个行匹配的行。 • 4、搜索已定义了foreign key约束的两个表之 间匹配的行。 • 5、使用like比较进行查询,且模式以特定的 字符串如:a%开头。等等
建立索引的准则 ·若确定要创建索引,则需要考虑如下准则: 1、尽管对于不需要修改数据的查询语句,大 量索引将有助于提高性能。但如果数据表中存 在大量索引,则 insert、 update、 delete语句 的性能将会受到影响,因为在数据表中的数据 进行更改时,系统需要对这些索引进行适当的 调整。 2、在小型表上创建索引可能不会产生太多的 优化效果,而且 SQL Server在遍历索引以搜 索数据所花费的时间可能比简单的完整表扫描 还长 13
13 建立索引的准则 • 若确定要创建索引,则需要考虑如下准则: • 1、尽管对于不需要修改数据的查询语句,大 量索引将有助于提高性能。但如果数据表中存 在大量索引,则insert、update、delete语句 的性能将会受到影响,因为在数据表中的数据 进行更改时,系统需要对这些索引进行适当的 调整。 • 2、在小型表上创建索引可能不会产生太多的 优化效果,而且SQL Server 在遍历索引以搜 索数据所花费的时间可能比简单的完整表扫描 还长
·3、若查询指定的所有数据列都包含在索 引中,如在员工的编号、姓名和基本工 资列上创建的组合索引,则从员工数据 表中査询编号和姓名列的查询被视为覆 盖的查询。创建覆盖查询的索引可以提 高性能,因为该查询所检索的所有数据 都包含在索引中,系统在检索数据时只 需要引用该数据表的索引页,不必引用 数据页,从而减少了输入输出总量
14 • 3、若查询指定的所有数据列都包含在索 引中,如在员工的编号、姓名和基本工 资列上创建的组合索引,则从员工数据 表中查询编号和姓名列的查询被视为覆 盖的查询。创建覆盖查询的索引可以提 高性能,因为该查询所检索的所有数据 都包含在索引中,系统在检索数据时只 需要引用该数据表的索引页,不必引用 数据页,从而减少了输入输出总量
索引的操作创建索引 利用企业管理器的索引向导创建; 利用企业管理器直接创建; 利用TSQL语句; ·新建表时创建。 15
15 索引的操作——创建索引 • 利用企业管理器的索引向导创建; • 利用企业管理器直接创建; • 利用T-SQL语句; • 新建表时创建