单键索引是否会一个sql走多个?
来源:互联网 发布:必修三数学算法程序 编辑:程序博客网 时间:2024/05/29 04:22
当你的sql可以匹配到多个单间索引的时候,大家一般都认为只走一个索引。mysql> \s--------------mysql Ver 14.14 Distrib 5.1.48, for Win32 (ia32)Connection id: 13Current database: pk_testCurrent user: root@localhostSSL: Not in useUsing delimiter: ;Server version: 5.1.48-community MySQL Community Server (GPL)Protocol version: 10Connection: localhost via TCP/IPServer characterset: latin1Db characterset: utf8Client characterset: latin1Conn. characterset: latin1TCP port: 3306Uptime: 43 min 42 secThreads: 2 Questions: 2604 Slow queries: 0 Opens: 23 Flush tables: 1 Open tables: 2 Queries per second avg: 0.993--------------========================================首先下面两个表是在同一个库里。CREATE TABLE `t_carmodelparamvalue2` ( `ModelParamValueID` int(11) NOT NULL AUTO_INCREMENT, `ParameterID` int(11) NOT NULL, `ParamValueID` int(11) DEFAULT NULL, `ModelID` int(11) NOT NULL, `ValueText` varchar(512) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, `SeriesID` int(11) DEFAULT NULL, PRIMARY KEY (`ModelParamValueID`), KEY `ModelID` (`ModelID`), KEY `SeriesID` (`SeriesID`), KEY `ak_paramvalue_parameterid` (`ParameterID`)) ENGINE=InnoDB AUTO_INCREMENT=1254098 DEFAULT CHARSET=gb2312;mysql> select count(*) from `t_carmodelparamvalue2`;+----------+| count(*) |+----------+| 500 |+----------+1 row in set (0.00 sec)mysql> explain select * from T_CarModelParamValue2 where modelid = 276666 and ParameterID = 180;+----+-------------+-----------------------+------+-----------------------------------+---------+---------+-------+------+-------------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+----+-------------+-----------------------+------+-----------------------------------+---------+---------+-------+------+-------------+| 1 | SIMPLE | T_CarModelParamValue2 | ref | ModelID,ak_paramvalue_parameterid | ModelID | 4 | const | 1 | Using where |+----+-------------+-----------------------+------+-----------------------------------+---------+---------+-------+------+-------------+1 row in set (0.00 sec)===================================================但是,当数据超过百万级的时候呢?CREATE TABLE `t_carmodelparamvalue` ( `ModelParamValueID` int(11) NOT NULL AUTO_INCREMENT, `ParameterID` int(11) NOT NULL, `ParamValueID` int(11) DEFAULT NULL, `ModelID` int(11) NOT NULL, `ValueText` varchar(512) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, `SeriesID` int(11) DEFAULT NULL, PRIMARY KEY (`ModelParamValueID`), KEY `ModelID` (`ModelID`), KEY `SeriesID` (`SeriesID`), KEY `ak_paramvalue_parameterid` (`ParameterID`)) ENGINE=InnoDB AUTO_INCREMENT=1253591 DEFAULT CHARSET=gb2312;mysql> select count(*) from `t_carmodelparamvalue`;+----------+| count(*) |+----------+| 1189500 |+----------+1 row in set (2.73 sec)mysql> explain select * from T_CarModelParamValue where modelid = 276666 and ParameterID = 180;+----+-------------+----------------------+-------------+-----------------------------------+-----------------------------------+---------+------+------+-----------------------------------------------------------------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+----+-------------+----------------------+-------------+-----------------------------------+-----------------------------------+---------+------+------+-----------------------------------------------------------------+| 1 | SIMPLE | T_CarModelParamValue | index_merge | ModelID,ak_paramvalue_parameterid | ModelID,ak_paramvalue_parameterid | 4,4 | NULL |1 | Using intersect(ModelID,ak_paramvalue_parameterid); Using where |+----+-------------+----------------------+-------------+-----------------------------------+-----------------------------------+---------+------+------+-----------------------------------------------------------------+1 row in set (0.00 sec)走的却是两个。
看表现的结论是,当数据量达到百万的时候就会走多个。
其实,是,当一个表做过大量的insert、select或者转换引擎等操作时,就会出现这个问题。
清空那个百万级的表之后还是会先走多个引擎。
- 单键索引是否会一个sql走多个?
- MongoDB 单键(列)索引
- 执行计划、索引 是否会影响SQL的执行结果
- 单键索引还是组合索引
- 复合索引和单键索引
- 单键索引还是组合索引
- 单键索引还是组合索引
- 单键索引还是组合索引
- charindex 是否会消除索引
- 8.4.6 单键索引还是组合索引
- mysql like 是否会用到索引
- 单键索引和组合索引选择及优化
- 哪些情况下sql索引会失效
- 哪些情况下sql索引会失效
- SQL Server: 查表是否有索引
- sql server检查索引是否丢失
- SQL约束、索引 判断是否存在
- Hibernate是否是发sql,是否会commit
- 【eclipse】版本代号
- C++第十四周【任务1】 建立专门的数组类处理有关数组的操作(加强版)
- JavaCore/HeapDump文件及其分析方法
- 通过内核源码看函数调用之前世今生
- Servlet文件下载
- 单键索引是否会一个sql走多个?
- 教你恢复清空的回收站里面的内容
- Android获取图片资源的方式 ----- 补充
- linux sh: /bin/cp: Argument list too long 问题解决
- Heapdump javacore文件分析工具
- C语言getchar函数
- jni使用基础(三)之Android.mk文件详解
- android解析XML
- test