索引与视图

索引 INDEX

系统在存储数据时,会自动选择合适的索引作为存储路径,用户不必也不能选择索引。
在数据库中,索引使对数据的查找不需要对整个表进行扫描,就可以在其中找到所需要的数据。
SQL Server中的索引采用B树结构。
索引由索引项组成,索引项由索引关键字组成。
B树按索引关键字排序,可以对组成索引关键字的任何词条集合进行高效搜索。

聚簇索引 CLUSTERED INDEX

聚簇索引确定表中的物理顺序,数据按索引列进行物理排序。
一个表中只能包含一个聚簇索引。如果表中没有创建其他聚簇索引,则在表的主键列上自动创建聚簇索引。

非聚簇索引 NONCLUSTERED INDEX

数据和索引分别存储在不同地方,索引带有指向数据的存储位置的指针。
索引中的索引项按索引键值顺序存储而表中的信息按另一种顺序存储。

唯一索引 UNIQUE INDEX

唯一索引可以确保索引列不包含重复的值。
在多列唯一索引的情况下,该索引可以确保索引列中每个值的组合都是唯一的。

建立索引

在SQL Server 2012中可以用SQL命令建立索引,具体的命令格式如下:

CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED] INDEX 索引名
ON 表 或 视图
(列名 [ASC|DESC])
WHERE 子句

重建索引

使用ALTER INDEX 语句重新生成原来的索引,语法格式为:

ALTER INDEX {索引名|ALL}
ON 表 或 视图
{REBUILD

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
实验目的:比较使用索引和不使用索引时查询的效率,并分析使用索引的优缺点。 实验环境:MySQL数据库,一个包含100万条记录的示例。 实验步骤: 1.创建示例 ``` CREATE TABLE student ( id INT PRIMARY KEY, name VARCHAR(50), age INT, gender CHAR(1), score FLOAT ); ``` 2.插入100万条随机数据 ``` INSERT INTO student (id, name, age, gender, score) VALUES (1, '张三', 18, '男', 85.5), (2, '李四', 19, '女', 92.5), ... (1000000, '王五', 20, '男', 73.5); ``` 3.使用不带索引的查询语句 ``` SELECT * FROM student WHERE age = 18; ``` 4.使用带索引的查询语句 ``` CREATE INDEX idx_age ON student(age); SELECT * FROM student WHERE age = 18; ``` 实验结果: 1.使用不带索引的查询语句,查询耗时为1.4秒左右。 2.使用带索引的查询语句,查询耗时仅为0.06秒左右。 实验分析: 通过实验结果可以看出,使用索引的查询效率比不使用索引的查询效率高了很多。这是因为索引可以通过建立一个树形结构来加快数据的查找速度,而不使用索引时,需要对中的全部数据进行一一扫描,耗费时间和资源很多。 不过索引也有一些缺点。首先,建立索引会占用一定的磁盘空间,如果的数据量很大,可能会导致索引文件非常庞大,甚至超过数据文件的大小。其次,在对进行增删改操作时,索引也需要进行相应的更新,这会降低数据修改的效率。 因此,在实际应用中,我们需要根据具体情况来选择是否使用索引。对于数据量比较小的,或者对数据修改频繁的,可以不使用索引;而对于数据量较大的,或者查询频率较高的,使用索引可以有效提高查询效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CONTINUE_WY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值