MySQL优化之强制索引的使用
2023-09-11 14:19:17 时间
问题描述:
-- 根据类型(type)以及类型id(type_id)查询所有的在职人员(status=1)的id、姓名、岗位(post_name)以及部门id
SELECT
u.id,
realname,
s.title AS post_name,
new_groupid
FROM
crm_user u
LEFT JOIN crm_station s ON u.post = s.id
WHERE
type = 0
AND type_id = 0
AND u.`status` = 1
(1)在user表中对type字段添加索引;
(2)首先使用explain来查看一下SQL性能如下:
通过结果可以看出,虽然对type字段已经建立了索引,但是这个索引好像并没有起到作用,那么究竟是为什么呢?因为 type字段值的类型不多,就好比性别字段,除了1就是0,这种情况下影响结果集巨大,就会全表扫描,这种情况全表扫描还要快于利用索引。那如何继续使用索引呢?
解决方案:
SELECT
u.id,
realname,
s.title AS post_name,
new_groupid
FROM
crm_user u FORCE INDEX(type)
LEFT JOIN crm_station s ON u.post = s.id
WHERE
type = 0
AND type_id = 0
AND u.`status` = 1
(1)对type字段使用强制索引 FORCE INDEX(字段名称);
(2)再次使用explain来查看一下SQL性能如下:
相关文章
- mysql索引总结(4)-MySQL索引失效的几种情况
- MySQL索引的理解
- 【MySQL】索引
- 【MySQL高级】Mysql的体系结构概览及存储引擎以及索引的使用
- Mysql和redis事物对比
- MySQL联合索引(复合索引)
- 为什么 MySQL 采用 B+ 树作为索引?
- 测试环境治理之MYSQL索引优化篇
- Mysql错误check the manual that corresponds to your MySQL server version for the right syntax
- MySQL第四讲 MySql Undo日志 - 对聚簇索引进行CUD操作
- 【MySQL进阶-06】深入理解mysql的内核查询成本计算
- 【MySQL进阶-10】mysql语句的执行流程以及集群的高可用
- Mysql查询可通过给条件字段添加索引提高查询速度
- MySQL 优化之 ICP (index condition pushdown:索引条件下推)
- 转 【MySQL】常用拼接语句 shell 下执行mysql 命令
- MySQL 5.6 解决InnoDB: Error: Table "mysql"."innodb_table_stats" not found.问题
- mysql如何查看索引使用情况以及优化 - guols0612
- mysql索引优化面试题
- MySQL数据库:SQL优化与索引优化
- Mysql索引原理及优化
- 【MySQL】进阶——一起探究MySQL优化器如何选择索引的奥秘
- Mysql优化 B+Tree索引和Hash索引
- mysql union和union all 的差别以及使用
- mysql列的处理
- MySQL性能优化的21个最佳实践 和 mysql使用索引
- 【MySQL】Mybatis-Plus解决多数据源无法输出SQL语句的问题
- mysql性能优化-慢查询分析、优化索引和配置
- 由浅入深探究mysql索引结构原理、性能分析与优化