千家信息网

mysql数据库中使用索引技巧有哪些

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍了mysql数据库中使用索引技巧有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。花1分钟时间,了解聚集索引,非聚集
千家信息网最后更新 2025年11月07日mysql数据库中使用索引技巧有哪些

这篇文章主要介绍了mysql数据库中使用索引技巧有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

花1分钟时间,了解聚集索引,非聚集索引,联合索引,索引覆盖。

举例,业务场景,用户表,表结构为:

t_user(uid primary key,login_name unique,passwd,login_time,age,…);

聚集索引(clustered index):聚集索引决定数据在磁盘上的物理排序,一个表只能有一个聚集索引,一般用primary key来约束。

举例:t_user场景中,uid上的索引。

非聚集索引(non-clustered index):它并不决定数据在磁盘上的物理排序,索引上只包含被建立索引的数据,以及一个行定位符row-locator,这个行定位符,可以理解为一个聚集索引物理排序的指针,通过这个指针,可以找到行数据。

举例,查找年轻MM的业务需求:

select uid from t_user where age > 18 and age < 26;

age上建立的索引,就是非聚集索引。

联合索引:多个字段上建立的索引,能够加速复核查询条件的检索

举例,登录业务需求:

select uid, login_time from t_user where login_name=? and passwd=?

可以建立(login_name, passwd)的联合索引。

联合索引能够满足最左侧查询需求,例如(a, b, c)三列的联合索引,能够加速a | (a, b) | (a, b, c) 三组查询需求。

这也就是为何不建立(passwd, login_name)这样联合索引的原因,业务上几乎没有passwd的单条件查询需求,而有很多login_name的单条件查询需求。

提问:

select uid, login_time from t_user wherepasswd=? and login_name=?

能否命中(login_name, passwd)这个联合索引?

回答:可以,最左侧查询需求,并不是指SQL语句的写法必须满足索引的顺序(这是很多朋友的误解)

索引覆盖:被查询的列,数据能从索引中取得,而不用通过行定位符row-locator再到row上获取,即"被查询列要被所建的索引覆盖",这能够加速查询速度。

举例,登录业务需求:

select uid, login_time from t_user wherelogin_name=? and passwd=?

可以建立(login_name, passwd, login_time)的联合索引,由于login_time已经建立在索引中了,被查询的uid和login_time就不用去row上获取数据了,从而加速查询。

末了多说一句,登录这个业务场景,login_name具备唯一性,建这个单列索引就好。

作业:

假设订单有三种状态:0已下单,1已支付,2已完成

业务需求,查询未完成的订单,哪个SQL更快呢?

select * from order where status!=2select * from order where status=0 or status=1select * from order where status IN (0,1)select * from order where status=0unionselect * from order where stauts=1

感谢你能够认真阅读完这篇文章,希望小编分享的"mysql数据库中使用索引技巧有哪些"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

索引 查询 需求 数据 联合 业务 篇文章 场景 条件 物理 定位 排序 登录 技巧 数据库 不用 指针 朋友 磁盘 订单 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 开发的程序必须上传服务器吗 腾诚软件开发培训 与网络安全相关的法律有哪些 山西常用软件开发价格大全 浙江特色软件开发概念设计 ibm服务器有三块硬盘 上海网络技术市场价 网络安全 网络文明 有哪些软件开发的单位 甘肃电信服务器地址云空间 2020魔兽怀旧服服务器人口 本地的数据库应该输入什么 北京壕鑫互联网科技 全市网络安全工作培训会 orcad配置数据库后很卡 数据库违反唯一约束条件怎么办 大数据数据库技术 为什么服务器维护时不能登录 网络技术有限公司税收多少 网络安全讲堂开讲 郭靖网络安全生态峰会 称重系统里的数据库如何卸载 广州市乐游互联网科技有限公司 江门市软件开发公司排名 mac轻量级数据库 广州番禺区网络安全 河南什么是网络技术分类标准 软件开发源码部署 拳头客户端无法连接服务器 关闭服务器无法运行前端项目
0