[MySQL]索引

[MySQL]索引,第1张

概述一、索引原理 1. 使用索引为什么会快? btree类型的索引,就是使用的二分查找法,肯定快啊,算法复杂度是 ,也就是说16条数据查4次,32条数据查5次,64条数据查6次....依次类推。 btre 一、索引原理1. 使用索引为什么会快?

btree类型的索引,就是使用的二分查找法,肯定快啊,算法复杂度是 log2N,也就是说16条数据查4次,32条数据查5次,64条数据查6次....依次类推。

btree 方式检索,算法复杂度: log2N

2. 索引的代价磁盘占用空间增多对dml(update delete insert)语句的效率影响二、索引类型

简述MysqL四种索引的区别:

PRIMARY 索引:在主键上自动创建UNIQUE 索引: 只要是 UNIQUE 就是 Unique 索引。(只能在字段内容不重复的情况下,才能创建唯一索引)INDEX 索引:普通索引FulLTEXT:只在 MYISAM 存储引擎支持,目的是全文索引,在内容系统中用的多,在全英文网站用多(英文词独立). 中文数据不常用,意义不大,国内全文索引通常使用 sphinx 来完成,全文索引只能在 charvarchartext 字段创建三、关于增加索引中的原则索引列数最好在1-2根据where条件创建索引,select的字段不要包含什么索引(用*号)不要过多用索引,否则对表更新的效率有很大的影响,因为在 *** 作表的时候要化大量时间花在创建索引中对于复合索引,在查询使用时,最好将条件顺序按找索引的顺序,这样效率最高不要试图分别基于单个列建立多个单列索引(因为虽然有多个单列索引,但是MysqL只能用到其中的那个它认为似乎最有效率的单列索引)四、哪些列上适合添加索引较频繁的作为查询条件字段应该创建索引唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件更新非常频繁的字段不适合创建索引不会出现在WHERE子句中的字段不该创建索引五、索引常用 *** 作1. 添加PRIMARY KEY(主键索引)
MysqL>ALTER table `table_name` ADD PRIMARY KEY ( `column` )
2. 添加UNIQUE(唯一索引)
MysqL>ALTER table `table_name` ADD UNIQUE (`column`)
3. 添加INDEX(普通索引)
MysqL>ALTER table `table_name` ADD INDEX index_name ( `column` )
4. 添加FulLTEXT(全文索引)
MysqL>ALTER table `table_name` ADD FulLTEXT (`column`)
5. 添加多列索引

注意:当搜索时候需要多个条件作为条件是的时候使用多列索引,搜索条件可为:column1;column1,column2;column1,column2,column3;

MysqL>ALTER table `table_name` ADD INDEX index_name ( `column1`,`column2`,`column3` )
6. 查看索引
MysqL> show index from tblname;
7.删除索引
DROP INDEX index_name ON table_name
六、如何让索引生效

查询要使用索引最重要的条件是查询条件中需要使用索引。

可以通过 explain,查看 sql 中的索引是否生效:

explain select * from ip;+----+-------------+-------+------+---------------+------+---------+------+------+-------+| ID | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra |+----+-------------+-------+------+---------------+------+---------+------+------+-------+|  1 | SIMPLE      | ip    | ALL  | NulL          | NulL | NulL    | NulL |  400 | NulL  |+----+-------------+-------+------+---------------+------+---------+------+------+-------+
select_typetabletypepossible_keyskeykey_lenrowsExtra
表示查询的类型输出结果集的表表示表的连接类型表示查询时,可能使用的索引表示实际使用的索引索引字段的长度扫描出的行数(估算的行数)执行情况的描述和说明
1. 下列几种情况下有可能使用到索引:对于创建的多列索引,只要查询条件使用了最左边的列,索引一般就会被使用。对于使用like的查询,查询如果是 '%aaa' 不会使用到索引, 'aaa%' 会使用到索引。2. 下列的表将不使用索引:如果条件中有or,即使其中有条件带索引也不会使用。对于多列索引,不是使用的第一部分,则不会使用索引。like 查询是以%开头如果列类型是字符串,那一定要在条件中将数据使用引号引用起来。否则不使用索引。(添加时,字符串必须'')如果MysqL估计使用全表扫描要比使用索引快,则不使用索引。参考MySQL性能优化二MySQL单列索引和组合索引的选择效率与explain分析SQL Server的复合索引学习 总结

以上是内存溢出为你收集整理的[MySQL]索引全部内容,希望文章能够帮你解决[MySQL]索引所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1152976.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存