iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >mysql哪些查询情况不走索引
  • 454
分享到

mysql哪些查询情况不走索引

2023-06-30 07:06:43 454人浏览 八月长安
摘要

这篇文章主要介绍“mysql哪些查询情况不走索引”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Mysql哪些查询情况不走索引”文章能帮助大家解决问题。mysql哪些查询情况不走索引索引列参与计算,不

这篇文章主要介绍“mysql哪些查询情况不走索引”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Mysql哪些查询情况不走索引”文章能帮助大家解决问题。

mysql哪些查询情况不走索引

索引列参与计算,不走索引

SELECT `username` FROM `t_user` WHERE age=20;-- 会使用索引SELECT `username` FROM `t_user` WHERE age+10=30;-- 不会使用索引!!因为所有索引列参与了计算SELECT `username` FROM `t_user` WHERE age=30-10;-- 会使用索引

索引列使用函数,可能不走索引

-- 不会使用索引,因为使用了函数运算,原理与上面相同SELECT username FROM t_user WHERE concat(username,'1') = 'admin1'; -- 会使用索引SELECT username FROM t_user WHERE username = concat('admin','1');

索引列使用 like 语句,可能不走索引

SELECT * FROM USER WHERE username LIKE 'mysql测试%'   --走索引SELECT * FROM USER WHERE username LIKE '%mysql测试'   --不走索引SELECT * FROM USER WHERE username LIKE '%mysql测试%'  --不走索引

数据类型隐式转换,字符串列与数字直接比较,不走索引

-- stock_code字符串类型带索引SELECT * FROM `stock_data` WHERE stock_code = '600538'  --走索引SELECT * FROM `stock_data` WHERE stock_code = 600538  --不走索引

尽量避免 OR 操作,只要有一个字段没有索引,改语句就不走索引,不走索引!

-- stock_code带索引,open不带索引SELECT * FROM `stock_data` WHERE `stock_code` = '600538' OR `open` = 6.62  -- 不走索引-- stock_code带索引,up_down_pre带索引SELECT * FROM `stock_data` WHERE `stock_code` = '600538' OR `up_down_pre` = 5.1  -- 走索引

where id !=2 或者 where id <> 2,不走索引!

SELECT * FROM t_user WHERE username <> 'mysql测试'

is null,is not null也无法使用索引,不走索引!

SELECT * FROM t_user WHERE username IS NULL -- 不走索引SELECT * FROM t_user WHERE username IS NOT NULL -- 不走索引

索引列使用 in 语句,可能不走索引

-- stock_code数据类型为varcharSELECT * FROM `stock_data` WHERE `stock_code` IN ('600538')  -- 走索引SELECT * FROM `stock_data` WHERE `stock_code` IN ('600538','688663','688280')  -- 走索引SELECT * FROM `stock_data` WHERE `stock_code` IN (大量数据)  -- 不走索引SELECT * FROM `stock_data` WHERE `stock_code` IN (600538)  -- 不走索引

不走索引的情况:

1.没有查询条件,或者查询条件没有建立索引在业务数据库中,特别是数据量比较大的表。

建议:

1 换成有索引的列作为查询条件

2 或者将查询频繁的列建立索引

2.查询结果集是原表中的大部分数据,应该是25%以上

查询的结果集,超过了总数行数25%,优化器觉得就没有必要走索引了。

建议:

1 如果业务允许,可以使用limit控制。

2 结合业务判断,有没有更好的方式。如果没有更好的改写方案

3 尽量不要在mysql存放这个数据了。放到redis里面。

3.索引本身失效,统计数据不真实

索引有自我维护的能力,对于表内容变化比较频繁的情况下,有可能会出现索引失效。

更改方案:

备份表数据,删除重建相关表。

4.查询条件使用函数在索引列上,或者对索引列进行运算,运算包括(+,-,*,/,! 等)

更改方法:

减少在mysql中使用加减乘除等计算运算。

5.隐式转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误.

索引建立的字段为varchar();

select * from stu where name = ‘111';走索引select * from stu where name = 111;不走索引

更改方法:

与研发协商,语句查询符合规范。

6.<> ,not in 不走索引(辅助索引)

更改方法:

尽量不要用以上方式进行查询,或者选择有索引列为筛选条件。

单独的>,<,in 有可能走,也有可能不走,和结果集有关,尽量结合业务添加limit

or或in 尽量改成uNIOn

7.like “%” 百分号在最前面不走

EXPLaiN SELECT * FROM teltab WHERE telnum LIKE ‘31%' 走索引EXPLAIN SELECT * FROM teltab WHERE telnum LIKE ‘%110' 不走索引

更改方法:

%linux%类的搜索需求,可以使用elasticsearch+mongodb 专门做搜索服务的数据库产品

关于“mysql哪些查询情况不走索引”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网数据库频道,小编每天都会为大家更新不同的知识点。

您可能感兴趣的文档:

--结束END--

本文标题: mysql哪些查询情况不走索引

本文链接: https://www.lsjlt.com/news/327633.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql哪些查询情况不走索引
    这篇文章主要介绍“mysql哪些查询情况不走索引”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mysql哪些查询情况不走索引”文章能帮助大家解决问题。mysql哪些查询情况不走索引索引列参与计算,不...
    99+
    2023-06-30
  • 你知道mysql哪些查询情况不走索引吗
    目录前言mysql哪些查询情况不走索引不走索引的情况:总结前言 在MySQL中,并不是你建立了索引,并且你在SQL中使用到了该列,MySQL就肯定会使用到那些索引的,有一些情况很可能...
    99+
    2024-04-02
  • mysql不走索引的情况有哪些
    以下是一些可能导致MySQL不走索引的情况:1. 数据量太小:当数据量太小时,MySQL可能会选择全表扫描而不是使用索引。这是因为索...
    99+
    2023-09-20
    mysql
  • Oracle like、不等于、隐式转换走索引与不走索引情况
    1. 概述 # like (1)当使用like查询时,后模糊匹配,则走索引,如like 'test%' (2)当使用like查询时,前模糊匹配,则不走索引,如like&...
    99+
    2024-04-02
  • MySQL中使用IN()查询到底走不走索引?
    MySQL中使用IN()查询到底走不走索引? 看数据量 EXPLAINSELECT * from users WHERE is_doctor in (0,1); 很明显没走索...
    99+
    2023-10-27
    原型模式 java spring 开发语言 后端
  • MySQL索引失效的情况有哪些
    这篇文章主要讲解了“MySQL索引失效的情况有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL索引失效的情况有哪些”吧!1.最左前缀原则在MySQL数据库中,联合索引遵守最左前缀...
    99+
    2023-07-05
  • mysql引发索引失效的情况有哪些
    这篇文章主要讲解了“mysql引发索引失效的情况有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql引发索引失效的情况有哪些”吧!1、在查询条件中计算索引列的使用函数或操作。若已建...
    99+
    2023-06-20
  • oracle索引不生效的情况有哪些
    有以下几种情况会导致Oracle索引不生效:1. 索引选择错误:如果创建的索引不适合查询语句的使用模式,那么索引就不会被使用。例如,...
    99+
    2023-09-29
    oracle
  • 哪些情况会导致 MySQL 索引失效
    目录前言创建测试表和数据索引失效情况1:非最左匹配索引失效情况2:错误模糊查询索引失效情况3:列运算索引失效情况4:使用函数索引失效情况5:类型转换索引失效情况6:使用 is not...
    99+
    2024-04-02
  • mysql or走索引加索引及慢查询的作用
    目录 前言一 概述二 实验表结构声明三 Mysql不走索引归类以及详细解析1. 查询条件在索引列上使用函数操作,或者运算的情况2. 查询条件字符串和数字之间的隐式转换3. ...
    99+
    2024-04-02
  • MySQL is null 走不走索引?
    网上很多的说法,都是说不能走索引。但其实是错误的。 其实也是又可能走索引的。 比如,select * from table where a = xxx or a is null; ...
    99+
    2023-09-13
    mysql 数据库 java 索引失效 索引
  • MySQL导致索引失效的情况有哪些
    本篇内容主要讲解“MySQL导致索引失效的情况有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL导致索引失效的情况有哪些”吧!一、准备工作首先准备两张表用于演示:CREATE&nbs...
    99+
    2023-07-02
  • mysql组合索引失效的情况有哪些
    MySQL组合索引失效的情况有以下几种:1. 索引列的顺序不符合查询条件:组合索引的顺序非常重要,如果查询条件中的列不按照组合索引的顺序进行查询,那么组合索引将失效。2. 索引列被使用了函数或表达式:如果查询条件中的索引列被使用了函数或...
    99+
    2023-08-09
    mysql
  • 浅谈mysql哪些情况会导致索引失效
    下面有一些培训教学机构的口诀和我个人的一些总结: 为了讲解以下索引内容,我们先建立一个临时的表 test02 CREATE TABLE `sys_user` ( `id` v...
    99+
    2024-04-02
  • mysql中出现索引失效的情况有哪些
    本篇文章给大家分享的是有关mysql中出现索引失效的情况有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。最佳左前缀原则——如果索引了多列,要遵守最左前缀原则。指的是查询要从...
    99+
    2023-06-15
  • SqlServer索引失效的情况有哪些
    表数据量过小或者分布不均匀,导致SQL Server查询优化器认为使用索引扫描的代价大于全表扫描,从而选择全表扫描而不是使用索引...
    99+
    2024-04-16
    SqlServer
  • innodb索引失效的情况有哪些
    数据量过大:当数据表中的数据量非常大时,索引可能会失效,因为MySQL可能会选择不使用索引而进行全表扫描,这样会导致查询性能下降...
    99+
    2024-03-14
    innodb
  • delete in子查询不走索引问题分析
    目录引言问题复现原因分析优化方案为什么加个别名就可以走索引了呢?总结引言 文章开篇前,先问大家一个问题:delete in子查询,是否会走索引呢?很多伙伴第一感觉就是:会走...
    99+
    2024-04-02
  • SQL索引失效的情况有哪些
    这篇文章主要介绍了SQL索引失效的情况有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SQL索引失效的情况有哪些文章都会有所收获,下面我们一起来看看吧。数据库调优的大致方向:索引失效,没有充分利用到索引&a...
    99+
    2023-07-05
  • mysql中delete in子查询不走索引问题怎么解决
    本文小编为大家详细介绍“mysql中delete in子查询不走索引问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“mysql中delete in子查询不走索引问题...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作