博客 > SQL知识:SQL索引的类型、用法、创建以及使用场景
浏览量:569次评论:0次
作者:锐成网络整理时间:2024-07-11 17:15:03
SQL索引在数据库中扮演着至关重要的角色,它们可以极大地提升数据库的性能,降低查询的耗时。今天我们将深入介绍SQL索引的相关知识,包括SQL索引的类型、用法以及使用场景,也包括创建索引的语法、索引的区别、以及索引的创建原则等内容。
索引的用法
索引类似于书籍的目录,要想找到一本数的某个特定主题,需要先查找书的目录,定位对应的页码。
存储引擎使用类似的方式进行数据查询,先去索引当中找到对应的值,然后根据匹配的索引找到对应的数据行。
创建索引的语法
首先创建一个表
create table t1 (
id int primary key,
username varchar(20),
password varchar(20)
);
创建单个索引的语法
CREATE INDEX 索引名 on 表名(字段名)
索引名一般是:表名_字段名
给id创建索引:CREATE INDEX t1_id on t1(id);
创建联合索引的语法:CREATE INDEX 索引名 on 表名(字段名1,字段名2)
给username和password创建联合索引:CREATE index t1_username_password ON t1(username,password)
其中index还可以替换成unique,primary key,分别代表唯一索引和主键索引
删除索引:DROP INDEX t1_username_password ON t1
索引对性能的影响
大大减少服务器需要扫描的数据量。
帮助服务器避免排序和临时表。
将随机I/O变顺序I/O。
大大提高查询速度。
降低写的速度(不良影响)。
磁盘占用(不良影响)。
索引的使用场景
索引的类型
索引很多种类型,是在MySQL的存储引擎实现的。
索引的区别
MySQL索引的创建原则
MySQL索引的注意事项
1、联合索引遵循前缀原则
KEY(a,b,c)
#以下SQL语句可以用到索引
WHERE a = 1 AND b = 2 AND c = 3
WHERE a = 1 AND b = 2
WHERE a = 1
#以下SQL语句用不到索引
WHERE b = 2 AND c = 3
WHERE a = 1 AND c = 3
2、LIKE查询,%不能在前
WHERE name LIKE "%wang%"
#以上语句用不到索引,可以用外部的ElasticSearch、Lucene等全文搜索引擎替代。
3、列值为空(NULL)时是可以使用索引的
MySQL难以优化引用了可空列的查询,它会使索引、索引统计和值更加复杂。可空列需要更多的储存空间,还需要在MySQL内部进行特殊处理。
4、如果MySQL估计使用索引比全表扫描更慢,会放弃使用索引
例如:表中只有100条数据左右。对于SQL语句WHERE id > 1 AND id < 100,MySQL会优先考虑全表扫描。
5、如果关键词or前面的条件中的列有索引,后面的没有,所有列的索引都不会被用到。
6、列类型是字符串,查询时一定要给值加引号,否则索引失效。
例如:列name varchar(16),存储了字符串"100" WHERE name = 100; 以上SQL语句能搜到,但无法用到索引。
重要声明:本文来自SQL数据库开发,经授权转载,版权归原作者所有,不代表锐成观点,转载的目的在于传递更多知识和信息。
相关文章推荐
2024-08-20 17:58:16
2024-08-19 17:49:29
2024-08-19 10:23:28
2024-08-16 17:06:33
2024-08-15 17:22:55
热门工具
标签选择
阅读排行
我的评论
还未登录?点击登录