MySQL in不走索引

优化前

SELECT*
 FROM erp_helei mg WHERE mg.num = 602 
 AND mg.pid 
 IN 
 (10002559,10002561,10002562,10002563,10002564,10002598,10002599,10002600,10002601,10002602,10002603,10002604,10002648,10002649,10002667,10002668,10002676,10002558)

优化后

SELECT*
 FROM erp_helei mg WHERE mg.num = 602 
 AND mg.pid 
 IN 
 (‘10002559‘,‘10002561‘,‘10002562‘,‘10002563‘,‘10002564‘,‘10002598‘,‘10002599‘,‘10002600‘,‘10002601‘,‘10002602‘,‘10002603‘,‘10002604‘,‘10002648‘,‘10002649‘,‘10002667‘,‘10002668‘,‘10002676‘,‘10002558‘)

原因

pid列是char类型,必须加‘‘号才可走索引,否则导致全表扫描,会随着表的增大而变得更慢

时间: 2024-09-12 12:54:36

MySQL in不走索引的相关文章

MySQL优化之——索引

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46591673 索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持所有索引类型. 根据存储引擎定义每个表的最大索引数和最大索引长度.所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节. 大多数存储引擎有更高的限制.MYSQL中索引的存储类型有两种:BTREE和HASH,具体和表的存储引擎相关: MYISAM和InnoDB存储

存储过程不走索引的第二次记录

1.故障现象业务连接返回超时,数据库大量线程卡在了updating状态,锁等待十分严重,主机性能反而正常2.初步的处理查看错误日志,发现一个存储过程的执行时间很长,差不多1000s左右,打开存储过程,果然发现里面的某条语句就是卡在updating的语句:初步定位到单条sql导致的数据库卡顿,分析存储过程里面的sql,对比表索引,利用explain获取sql执行计划,竟然是走了索引的.3.环境介绍由于是一个大量的并发业务,存储过程如下 delimiter $$ CREATE PROCEDURE `

数据库 MySQL进阶之索引

数据库的索引非常重要,基本面试数据库的问题都在索引上,所以这里小编整理出来,一方面为了自己复习,一方面也方便大家. 一,索引前传 在了解数据库索引之前,首先有必要了解一下数据库索引的数据结构基础,那么什么样的数据结构可以作为索引呢? B-tree是最常用的用于索引的数据结构.因为它们是时间复杂度低, 查找.删除.插入操作都可以可以在对数时间内完成.另外一个重要原因存储在B-Tree中的数据是有序的.数据库管理系统(RDBMS)通常决定索引应该用哪些数据结构.但是,在某些情况下,你在创建索引时可以

mysql之高性能索引

mysql之高性能索引 当db的量达到一定数量级之后,每次进行全表扫描效率就会很低,因此一个常见的方案是建立一些必要的索引作为优化手段,那么问题就来了: 那么什么是索引呢? 索引的实现原理是怎样的? 我们通常说的聚集索引,非聚集索引的区别是什么? 如何创建和使用索引呢? I. 索引介绍 MySQL官方对索引的定义为:索引是帮助MySQL高效获取数据的数据结构.简而言之,索引是数据结构 1. 几种树的结构 a. B+树 单来说就是一种为磁盘或者其他存储设备而设计的一种平衡二叉树,在B+tree中所

在数据库查询中不走索引的情况与压力测试

重点关注: 1) 没有查询条件,或者查询条件没有建立索引 例如: select * from tab; 全表扫描. select * from tab where 1=1; 在业务数据库中,特别是数据量比较大的表.是没有全表扫描这种需求. 1.对用户查看是非常痛苦的. 2.对服务器来讲毁灭性的. 例如: select * from tab; SQL改写成以下语句: selec * from tab order by price limit 10 需要在price列上建立索引 select * f

mysql B+Tree索引

原文地址:http://blog.codinglabs.org/articles/theory-of-mysql-index.html 数据结构及算法基础 索引的本质 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构.提取句子主干,就可以得到索引的本质:索引是数据结构. 我们知道,数据库查询是数据库的最主要功能之一.我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化.最基本的查询算法当然是顺序查找(linear searc

剖析Mysql的InnoDB索引

摘要: 本篇介绍下Mysql的InnoDB索引相关知识,从各种树到索引原理到存储的细节. InnoDB是Mysql的默认存储引擎(Mysql5.5.5之前是MyISAM,文档).本着高效学习的目的,本篇以介绍InnoDB为主.少量涉及MyISAM作为对照. 这篇文章是我在学习过程中总结完毕的.内容主要来自书本和博客(參考文献会给出).过程中增加了一些自己的理解.描写叙述不准确的地方烦请指出. 1 各种树形结构 本来不打算从二叉搜索树開始,由于网上已经有太多相关文章,可是考虑到清晰的图示对理解问题

mysql中的索引原理与表设计

索引是有效使用数据库的基础,但你的数据量很小的时候,或许通过扫描整表来存取数据的性能还能接受,但当数据量极大时,当访问量极大时,就一定需要通过索引的辅助才能有效地存取数据.一般索引建立的好坏是性能好坏的成功关键. 1.InnoDb数据与索引存储细节 使用InnoDb作为数据引擎的Mysql和有聚集索引的SqlServer的数据存储结构有点类似,虽然在物理层面,他们都存储在Page上,但在逻辑上面,我们可以把数据分为三块:数据区域,索引区域,主键区域,他们通过主键的值作为关联,配合工作.默认配置下

Mysql几种索引类型的区别及适用情况

如大家所知道的,Mysql目前主要有以下几种索引类型:FULLTEXT,HASH,BTREE,RTREE. 那么,这几种索引有什么功能和性能上的不同呢? FULLTEXT 即为全文索引,目前只有MyISAM引擎支持.其可以在CREATE TABLE ,ALTER TABLE ,CREATE INDEX 使用,不过目前只有 CHAR.VARCHAR ,TEXT 列上可以创建全文索引.值得一提的是,在数据量较大时候,现将数据放入一个没有全局索引的表中,然后再用CREATE INDEX创建FULLTE