SQL语句(五) 索引建立
一、实例
1.创建唯一性索引
SET STATISTICS TIME ON
SELECT * FROM customer WHERE name ='阿爆' ;
SET STATISTICS TIME OFFCREATE UNIQUE INDEX customer_name ON customer(name);--在customer表上的name列创建唯一性索引
2.创建函数索引在零件表的零件名称字段上创建一个零件名称的函数索引
sql server 不支持函数索引,因此需要添加长度列,在该列上创建索引
ALTER TABLE part ADD name_length as LEN(name) persisted
SET STATISTICS TIME ON
SELECT * FROM part WHERE name_length=5 ;
SET STATISTICS TIME OFFCREATE INDEX part_name ON part(name_length);
3.创建复合索引
SET STATISTICS TIME ON
SELECT * FROM customer A,customer B
WHERE A.name='阿倍仲麻吕'AND B.nationkey<200;
SET STATISTICS TIME OFFCREATE INDEX name_nationkey ON customer(name,nationkey);4.创建聚簇索引
如果在建表的时候建立了主键,没有建立聚簇索引,那么默认主键是聚簇索引
CREATE TABLE region2(/*地区表*/regionkey INTEGER ,/*地区编号*/name CHAR(25), /*地区名称*/comment CHAR(152) /*备注*/
);CREATE CLUSTERED INDEX region_name ON region2(name);
5.创建哈希索引
ALTER TABLE part ADD hash_name
AS CAST(HASHBYTES('MD2',name)AS UNIQUEIDENTIFIER) PERSISTED;
CREATE INDEX part_name ON part(hash_name);SET STATISTICS TIME ON
SELECT * FROM part WHERE hash_name = CAST(HASHBYTES('MD2','竹炭空气清新篮') AS UNIQUEIDENTIFIER)
SET STATISTICS TIME OFF
6.修改索引名称
CREATE INDEX name_nationkey ON customer(name,nationkey);
sp_rename'customer.name_nationkey','name_nationkey2','INDEX';
7.分析某个句子是否使用了索引
SELECT * FROM customer A,customer B
WHERE A.name='阿倍仲麻吕'AND B.nationkey<200;
8.验证索引效率SELECT DISTINCT name
FROM part;
CREATE INDEX part_name ON part(name);
--DROP INDEX part_name ON part;
二、注意
1、在创建唯一性索引的过程中出现了下面图片中的错误,后来经查询发现part表中name列上的值并不唯一,所以创建唯一索引会失败。
2.在创建聚簇索引时发现,如果在建表的时候建立了主键,没有建立聚簇索引,那么系统默认主键是聚簇索引,因此想要在有主键的表上实现建立聚簇索引,只能先删除主键,这样做其实并不实际。
3.创建索引可以加快查询的速度,但在试验中我发现并非所有的索引都会加快查询速度,因为索引本身就会导致额外的开销;此外,也并非所有的表都适合建立索引,如果一个表经常更新,索引往往会导致数据的物理顺序发生变化,付出的代价较大。
SQL语句(五) 索引建立相关推荐
- mysql添加索引的方法(Navicat可视化加索引和sql语句加索引)
使用索引的场景: 阿里云日志里出现了慢sql 然后发现publish_works_id字段会经常用于一些关联,所以决定把这个字段加上索引,优化sql 可视化navicat操作字段加索引,选择字段所在的 ...
- sql语句创建索引_SQL创建索引语句示例说明
sql语句创建索引 This statement is used to create an "index" on a column in an existing table. 该语 ...
- Effective MySQL之SQL语句最优化--索引
1 两个索引取并集组合 -- 执行命令: ALTER TABLE album ADD INDEX name_release (name,first_released); EXPLAIN SELECT ...
- 数据库 数据库SQL语句五
集合运算union 并集(两个集合如果有重复部分,那么只显示一次重复部分) union all 并集(两个集合如果有重复部分,那么重复部分显示两次) intersect 交集 minus 差集--查询 ...
- SQL语句及索引优化
一.Count()和Max()的优化方法 1.查询最后支付时间-优化max()函数 1)语句:select max(payment_date) from payment; 2)查看执行计划:expla ...
- sql语句中索引的创建、删除及使用
索引创建.删除与使用: 1.1 create方式创建索引: CREATE [UNIQUE -- 唯一索引 | FULLTEXT -- 全文索引 ] INDEX index_name ON ...
- Sql Server sql语句创建索引
create index [index_mode] on [cn_name]([car_mode]); index_mode自定义索引名 cn_name表名 car_mode列名 1.创建普通索引 S ...
- 乐心湖‘s Blog——MySQL入门到精通 —— 囊括 MySQL 入门 以及 SQL 语句优化 —— 索引原理 —— 性能分析 —— 存储引擎特点以及选择 —— 面试题
- SQL索引建立原则和使用
之前在网上看到过很多关于mysql联合索引最左前缀匹配的文章,自以为就了解了其原理,发现遗漏了些东西,这里自己整理一下这方面的内容. 1 前言 SQL索引有两种,聚集索引和非聚集索引 聚集索引存储 ...
- 数据库索引--SQL语句执行效率、分析及优化
数据库表中字段上创建的索引,在写SQL语句进行查询时,索引可能会被使用到,也肯能因为SQL语句导致索引在此条SQL语句执行时索引无效. 聚簇索引的顺序就是数据的物理存储顺序,而对非聚簇索引的解释是:索 ...
最新文章
- Spring 注解 @bean 和 @component 的区别, 你知道吗?
- android报错res\drawable-xhdpi\ic_Dianhua.png: Invalid file name: must contain only [a-z0-9_.]
- JAVA之间的引用传递
- LeetCode 1049. 最后一块石头的重量 II(DP)
- Python 分析在德的中国程序员,告别 996 ?
- mysql system账户密码忘记了_MySQL数据库root账户密码忘记两种处理方法(保有效)...
- Java线程池自学手册Executor的使用
- 分页中PageSize和absolutepage详解
- 如何批量压缩图片?教你一键批量压缩图片的方法技巧
- 建立数学模型论文写作
- 【PyG 教程】PyG 自定义构造 GNN
- ____x86 xor 指令
- google map学习相关
- 八、DOM(一) -- DOM对象
- UTF-8与UTF-8(BOM)区别和一些说明
- python 编程4,和7 幸运数字
- 浅谈网络之“TCP协议”
- php class ziparchive not found,php Class 'ZipArchive' not found解决办法(php安装zip扩展)
- QQ中转服务器实现,200MB只要2分钟 揭秘QQ中转极速版真相
- 【亲测 | 004】趣味测试小程序源码各种测试(趣味测试、爱情测试、缘分测试、性格测试) | 极致技术工厂
热门文章
- itextpdf 怎么下划线_itext生成pdf设置下划线,itextpdf下划线,使用setUnderli
- 《必然》二、奔跑吧,所有人都是菜鸡
- 详细解释JavaScript中三元表达式
- 许三多买了中石油--暴笑股民语录许三多
- 未能加载“xxx”程序集
- Unity 动态编辑Terrain地形(五)贴图
- [转载]快速提高你修养的100句话,值得你珍藏
- Android 软键盘顶起布局相关
- python 冒号分隔_以冒号分隔的分析
- python快乐数字怎么表达_Python中的快乐数字