首页 / MYSQL / Mysql 索引问题集锦
Mysql 索引问题集锦
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Mysql 索引问题集锦,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1497字,纯文字阅读大概需要3分钟。
内容图文
-
索引:顾名思义用来检索、查找数据的key (字段)
-
几种Mysql 中的常见索引分类:普通索引(联合索引)、唯一索引、主键索引、全文索引
-
优点:使得查询数据变快
-
缺点:更新数据时,也需要更新索引。所以更新速度变慢,占据磁盘空间
注意:myisam中可以延迟更新索引
?
?
关于B+Tree 内容
Myisam 和 innodb 内容
- myisam 为mysql 5.5 版本前的默认数据库引擎:
myisam 使用B+Tree 结构存储数据。只有(只支持)主键索引、表锁,不支持外键,不支持事务,B+Tree 所有的非叶子节点都只存储 key
myisam 在叶子节点 data 域存储的是数据的地址,不是数据,当myisam引擎进行查找时,先根据索引在索引表中找到位置,去对应的data域拿到数据所在地址
然后去该地址提取出数据
?
- innodb 为mysql 5.5 版本后的默认数据库引擎.
?
innodb 也使用 B+Tree 结构存储数据,与myisam不同的有:支持外键、行锁、事务,B+Tree 的所有非叶子节点一样只存储 key
?
innodb 在叶子节点 data 域存储的是数据,叶子节点数据类型[key, data], 当 innodb引擎进行查找时,根据索引找到 data 位置,直接将data 中的数据取出
?
innodb 辅助索引(非主键索引外)进行查找时,根据辅助索引查找到 主键索引,再拿着主键索引到主键索引表中查找到 data 取出data。注意辅助索引并不存数据,
?
?
经常使用在 where、group by 、order by 的后面查询的字段,可设置索引
减少使用子查询
多使用limit 这样数据量被限制较小,能提高查询速度
适度增加冗余字段,减少跨表查询,常用数据和不常用数据分表one2one保存
尽量不使用 * 查询数据,需要什么字段就查什么字段
别再数据库里面使用函数计算
尽量根据索引来检索数据
核心业务中别使用 like 语句模糊查询
将区分度字段写在where前面
?
创建表时添加索引:
create table tb_name(
--> id int not null auto_increment primary key,
--> name char(32) not null,
--> identify_num bigint not null,
--> unique key(identify_num),
--> index name_index (name(32))
--> );更新表结构时添加:alter table tb_name add
alter table tb_name add index name_index(name(32));
?
create unique index identify_index on tb_name(identify_num)
?
?
like会导致索引失效
?
like "%name" //失效的
?
like "name%" //不失效字段使用函数来修饰
?
例:select * from u1 where md5(name) = ‘j‘
3、 联合索引中字段,将区分度较大的字段放大前面
原文:https://www.cnblogs.com/shiqi17/p/9733741.html
内容总结
以上是互联网集市为您收集整理的Mysql 索引问题集锦全部内容,希望文章能够帮你解决Mysql 索引问题集锦所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。