索引的创建与使用
2017-12-19 16:46
148 查看
创建:
CREATE INDEX index_name ON table_name(column_name1,[column_name2],…)默认是非簇索引。种类:
按存储结构分簇索引、非簇索引。簇索引对表中数据重新排序(顺序只有一个,所以只能有一个该索引)重新存储到物理硬盘上,叶节点存储的是实际的数据,进行过排序,速度会非常快,占用空间相当于表中数据空间的120%。
非簇索引具有与表的数据完全分离的结构,但不必排序,叶节点存储关键字的值和行定位器,然后将行定位器按照关键字排序,它使用索引页存储,比簇索引占用更多的空间,且效率较低。
可以建立多个非簇索引(理论最多249个)DBMS只对创建索引的列的键值进行排序,索引的表行不排序,并没有改变表中数据存放的物理位置。
如果创建多个非簇索引,比如SQL SERVER的查询优化器会自动决定在查询执行期间使用哪个索引,当然还可以强制使用哪个索引,WHERE子句的列之一必须是索引所在列:
SELECT column1,solumn2
FROM table_name
WITH(INDEX(index_name))
WHERE condition
创建索引后,数据库系统实际上创建了一个索引结构体,用户每次使用查询数据时,都是用相同的数据结构,从而节约了时间。
复合索引:
两个或者更多字段上创建的多字段索引称为复合索引,如对性别、名称进行索引创建:CREATE INDEX SexName_index
ON student(sex,name)
sex的优先级大于name,查询结构先按sex排序(如先男后女),然后分别对男和女的名字进行排序
创建唯一索引(UNIQUE):
CREATE UNIQUE INDEX index_name ON table_name(column_name1,[column_name2],…)使用唯一索引时,第一需要表中该列没有相同值,否则创建失败,第二要确保创建索引的列不会有相同的值出现,否则在插入和修改的时候如果有两条数据的该索引列值相同,会插入或者
更新失败。
创建簇索引(CLUSTERDE):
CREATE CLUSTERDE INDEX index_name ON table_name(column_name1,[column_name2],…)带有簇索引的表,行是以索引顺序存放的。簇索引只有一个,创建新的要删除以前的簇索引。三点优势:
1、表占最小磁盘空间,因为插入时,会自动重用以前分配给删除行的空间。
2、所有列值在磁盘上相互靠近,有更快的查询执行速度。
3、不再需要ORDER BY语句。
对于经常发生插入操作和更新索引列值的表,尽量不要创建簇集索引。
索引销毁:
DROP INDEX index_name创建索引需要注意以下几点:
1、小数据表不需要创建索引2、查询结果小于所有数据25%时,使用索引最合适
3、索引列在WHERE子句中引频繁使用
4、要检索字段的数据包含很多数值或者NULL(空值)时,为该字段创建索引,会大大提升速度
5、尽量先装数据,再建索引,这样可以加快数据录入。否则,在初始化数据时,每插入一条记录都要维护一次索引
6、索引会降低数据更新速度,表中大量数据更新时,最好先销毁索引,再进行操作
7、索引占用空间,设计数据库时,把索引空间考虑进去
8、尽量把表和它的索引放在不同磁盘上来加快速度
相关文章推荐
- mysql 索引创建与使用
- Oracle sql 调优:使用虚拟索引在生产环境测试创建索引对数据库性能的影响
- MySQL下使用Inplace和Online方式创建索引的教程
- MySQL使用ALTER TABLE创建索引
- 索引的创建及使用(sqlserver 2005)
- ElasticSearch中head插件安装及创建索引,插入文档,使用
- DX编程(3) —— 使用索引缓冲 创建2个三角形
- “跨库导数据”、“事故处理”、“创建索引”、“使用触发器”等常用操作
- Oracle 的 索 引 的 创 建 :索引的创建方法,使用场合及建议
- SQL server索引 简介,创建与使用
- PLSQL_Oracle分区表和相应的分区索引管理和使用(案例)(创建交易表等大表时进行分区提高效率)
- mssql:t-sql;创建表;给表添加约束;使用变量;事务,索引,视图;存储过程;触发器trigger
- 创建试图监控所有索引的使用状况
- LIRE的使用:创建索引
- 使用sunspot创建索引时遇到的坑
- mysql的索引创建及使用
- Windows下安装sphinx和创建索引及使用
- 创建使用program对无效索引进行重建
- c#使用Lucene.net创建索引,实现搜索的代码示例
- 使用org.apache.lucene创建和查询索引核心代码详解