索引

2020-06-14  本文已影响0人  若能遇见
-- 创建表
CREATE TABLE authors(
    auth_id int IDENTITY(1,1) NOT NULL,
    auth_name varchar(20) NOT NULL,
    auth_gender tinyint NOT NULL,
    auth_phone varchar(15) Null,
    auth_note varchar(100) Null
);

创建索引

CREATE UNIQUE CLUSTERED INDEX Idx_phone
ON authors(auth_phone DESC)
WITH
FILLFACTOR = 30;
CREATE UNIQUE NONCLUSTERED INDEX Idx_nameAndgender
ON authors(auth_name,auth_gender)
WITH
FILLFACTOR = 10;

维护和管理索引

【例3】使用存储过程查看数据库中member表中定义的索引信息

-- 显示索引信息
GO
exec sp_helpindex 'authors';

执行结果如图:


image.png

图中显示了authors表中的索引信息:

-- 查看索引统计信息
DBCC SHOW_STATISTICS ('newdb.dbo.authors',Idx_phone);

执行结果如图:


image.png

图中统计信息包含3个部分:

--重命名索引
GO
exec sp_rename 'authors.idx_nameAndgender','multi_index','index';
--删除索引
GO
exec sp_helpindex 'authors'
DROP INDEX authors.multi_index
exec sp_helpindex 'authors'

问题:

  1. 索引对数据库性能如此重要,该如何使用它?

为数据选择索引是一项复杂任务。
如果索引列较少,则需要的磁盘空间和维护开销都少。
如果在一个大表上创建了多种组合索引,文件就会膨胀的很快。
而另一方面,索引较多则可覆盖更多查询。可能需要试验若干不同的设计,才能找到最有效的索引。
可以添加修改和删除索引而不影响数据库架构或应用程序设计。
因此,应该尝试多个不同的索引,从而建立最优的索引。

  1. 为什么要使用短索引?

对字符串类型的字段进行索引,如果可能应该指定一个前缀长度。
例如,如果有一个char(255)列,如果在前10个或30个字符内,多数值是唯一的,则不需要对整个列进行索引。
短索引不仅可以提高查询速度而且可以节省磁盘空间和减少I/O操作。

上一篇 下一篇

猜你喜欢

热点阅读