MYSQL索引类型+索引方法

MYSQL索引详解
本文深入讲解MYSQL中的四种索引类型:PRIMARY、INDEX、UNIQUE、FULLTEXT,以及它们的应用场景和注意事项,包括索引的效率、使用限制和优化技巧。

MYSQL索引有四种

PRIMARY(唯一且不能为空一张表只能有一个主键索引)、

INDEX(普通索引)、

UNIQUE(唯一性索引)、

FULLTEXT(全文索引:用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以)

ALTER TABLE t_user ADD INDEX name_city_phone(USERNAME,CITY,PHONE)  //普通复合索引

ALTER TABLE t_user ADD UNIQUE name_city_phone(USERNAME,CITY,PHONE) //唯一复合索引

  这样的组合索引,其实相当于分别建立了三个索引。

  为什么没有(CITY,PHONE)索引这是因为MYSQL组合查询只从最左边开始组合:始终包含username

  1.USERANME,CITY,PHONE  

  2.USERNAME,CITY  

  3.USERNAME,PHONE

  并不是查询语句包含这三列就会用到该组合索引:

  这样的查询语句才会用到创建的组合索引

SELECT * FROM t_user where USERNAME="parry" and CITY="广州" and PHONE="180"
SELECT * FROM t_user where USERNAME="parry" and CITY="广州"
SELECT * FROM t_user where USERNAME="parry" and PHONE="180" 

  这样的查询语句是不会用到创建的组合索引 

SELECT * FROM t_user where CITY="广州" and PHONE="180"
SELECT * FROM t_user where CITY="广州"

虽然索引提高了查询的速度,但是降低了INSERT、UPDATE、DELETE(DML)的速度,因为在插入、修改、删除数据时,还要同时操作一下索引文件;

 索引使用注意事项:

1.索引会忽略null值,所以我们在设计数据库的时候设置为为NOT NULL;

2.短索引(给索引设置长度)不仅能够提高查询速度,而且能节省I/O操作。

3.  Mysql在查询的时候只会使用一个索引

4. 不鼓励使用like对索引操作:like"%aaa%"不会使用索引;但like“aaa%”会使用索引。即可以对固定起始值模糊查询

5.不适用于否地操作(not in , <>, !=,or)

mysql的两种索引方法:

1.BTREE(用于对等比较,如"="和" <=>")   //<=> 安全的比对   ,用与对null值比较,语义类似is null()

2.HASH(用于非对等比较,比如范围查询)>,>=,<,<=、BETWEEN、Like

转载:https://www.cnblogs.com/brxHqs/p/9722113.html

### 索引类型 - **普通索引(Normal)**:最基本的索引类型,没有任何限制,用于提高查询效率。例如,在`username`列上创建普通索引: ```sql CREATE INDEX idx_username ON table_name (username); ``` - **唯一索引(Unique)**:要求索引列的值必须唯一,但允许有空值。若在多列上创建唯一索引,则列值的组合必须唯一。例如,在`email`列上创建唯一索引: ```sql CREATE UNIQUE INDEX idx_email ON table_name (email); ``` - **主键索引(Primary Key)**:一种特殊的唯一索引,不允许有空值。每个表只能有一个主键索引。创建表时定义主键索引: ```sql CREATE TABLE table_name ( id INT PRIMARY KEY, name VARCHAR(50) ); ``` - **全文索引(Full Text)**:用于在文本数据中进行全文搜索,在检索长文本时效果最佳。短文本建议使用普通索引。例如,在`content`列上创建全文索引: ```sql CREATE FULLTEXT INDEX idx_content ON table_name (content); ``` 使用全文索引进行搜索: ```sql SELECT * FROM table_name WHERE MATCH(content) AGAINST ('search keyword'); ``` ### 索引方法 - **B+索引**:是MySQL中最常用的索引结构,聚集索引和非聚集索引用的都是B+索引。B+索引适合范围查询和排序操作,因为其叶子节点按顺序连接,能高效地进行范围扫描。例如,在`age`列上创建B+索引: ```sql CREATE INDEX idx_age ON table_name (age); ``` - **Hash索引**:基于哈希表实现,只支持等值查询,不支持范围查询。当进行等值查询时,Hash索引能快速定位到记录。例如,创建Hash索引: ```sql CREATE INDEX idx_hash ON table_name (column_name) USING HASH; ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值