ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
### 索引     数据库的索引就像一本书的目录,能够加快数据库的查询速度。   MYSQL索引有四种单列索引 PRIMARY、INDEX、[UNIQUE](https://so.csdn.net/so/search?q=UNIQUE&spm=1001.2101.3001.7020)、FULLTEXT, 其中PRIMARY、INDEX、UNIQUE是一类,FULLTEXT是一类。   这四种都是单列索引,也就是他们都是作用于单个一列,所以也称单列索引;         但是一个索引也可以作用于多个列上,称为组合索引或[复合索引](https://so.csdn.net/so/search?q=%E5%A4%8D%E5%90%88%E7%B4%A2%E5%BC%95&spm=1001.2101.3001.7020)。 ***** ### 单列索引 (1)**PRIMARY**:主键索引。索引列**唯一且不能为空**;**一张表只能有一个主键索引**(主键索引通常在建表的时候就指定) (2)**NORMAL**:普通索引。索引列没有任何限制; > ALTER TABLE T_USER ADD INDEX U_INDEX (USERNAME) //给列USERNAME建普通索引 U_INDEX (3)**UNIQUE**:唯一索引。索引列的值必须是唯一的,但允许有空; > ALTER TABLE t_user ADD UNIQUE u_index(USERNAME) //给列T_USER添加唯一索引u_index (4)**FULLTEXT**:全文搜索的索引。FULLTEXT 用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。索引的新建和删除和上面一致,这里不再列举... ### 组合索引(复合索引) **组合索引就是把多个列加入到统一个索引中**,如新建的表T\_USER,我们给USERNAME+CITY+PHONE创建一个组合索引 > ALTER TABLE t_user ADD INDEX name_city_phone(USERNAME,CITY,PHONE) //组合普通索引 ALTER TABLE t_user ADD UNIQUE name_city_phone(USERNAME,CITY,PHONE) //组合唯一索引 ### 索引不足之处 (1)**索引提高了查询的速度,但是降低了INSERT、UPDATE、DELETE的速度,因为在插入、修改、删除数据时,还要同时操作一下索引文件;** (2)建立索引未见会占用一定的磁盘空间。 #### **在实际操作过程中,应该选取表中哪些字段作为索引?** 为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引,有7大原则: 1.选择唯一性索引 2.为经常需要排序、分组和联合操作的字段建立索引 3.为常作为查询条件的字段建立索引 4.限制索引的数目 5.尽量使用数据量少的索引 6.尽量使用前缀来索引 7.删除不再使用或者很少使用的索引