关于索引来解决慢查询的问题

原创 2016年08月29日 23:11:50

    写这篇博客并不是近期遇到这个问题,只是最近有点程序员的困惑,想着把自己知道的东西总结下来,这样心会安静点

    首先我需要讲一下索引的概念。数据库的索引就是跟书本的索引一样,可以快速的找到你想找到的东西,从而大大提高性能。

    当我们想去看看SQL语句走了哪些索引的时候,直接explain sql语句就可以查看了,例如:explain select * from user where userid="2";

   执行完这条语句后会出现10个字段,分别是id,select_type, table,type,possible_keys,key,ley_len,ref,rows,Extra。



id:这个代表着语句的查询顺序,现在上面只有1,但是如果出现联合查询语句的话,那就会有2,甚至有3等等。

select_type:这是搜索的级别,这里面有这个几个东西:大家可以参考一下这个博客:http://my.oschina.net/scipio/blog/293051?p=1

table:就是查询的表,这个没什么好说的

type:这里面有个比较,system>const>eq_ref>ref>fulltext>ref_or_null>index_merge>unique_subquery>index_subquery>range>index>all。其中system是最好,ALL是最次的

possible_keys:有可能会走的索引

key:实际走的索引

key_len:sql走的索引的长度

row:表示sql查询了几行才找到数据

Extra:查询的过程中的补充信息,这里我就不多说,http://my.oschina.net/scipio/blog/293052这篇博客说的很详细。



我需要补充的是:有个大牛跟我说,sql语句走哪条索引是不可控的,是自身来计算决定的。我们只能去做一些索引来供它去选择,以上言论供大家参考。


版权声明:本文为博主原创文章,未经博主允许不得转载。

回复面试官之应对什么字段进行索引

原文链接: 大家来讨论一下,索引一般设置在哪个字段上最好?-CSDN论坛-CSDN.NET-中国最大的IT技术社区 http://bbs.csdn.net/topics/330046821 建立索引常...
  • qq_26222859
  • qq_26222859
  • 2016年06月11日 22:37
  • 207

HashMap 对于获得 键值 的两种实现方式 ,要对 hashmap treemap 的实现 多关注

1.通过获得  Key 值 然后 ,通过key  来查找 值 HashMap map=new HashMap();  Set set = map.keyset();   for( Iterat...
  • ccycyy
  • ccycyy
  • 2011年10月20日 19:10
  • 3499

javascript基础学习(1)数据类型--array

数组 阅读: 121045 JavaScript的Array可以包含任意数据类型,并通过索引来访问每个元素。 要取得Array的长度,直接访问length属性: var a...
  • u012841667
  • u012841667
  • 2016年09月29日 11:52
  • 552

Ubuntu下使用Git_4

在这个第四个文章中,我将练习GIT的高级阶段了,由于高级阶段的内容转的比较多,我自己的代码除了我自己可以看懂意外,大家可能看不懂,所以我将会按照 http://git.wiki.navisec.it/...
  • z609932088
  • z609932088
  • 2016年09月11日 14:16
  • 1024

MySQL使用注意事项

(一)建表规约1.【强制】表达是与否概念的字段,必须使用 is_xxx的方式命名,数据类型是 unsigned tinyint( 1表示是,0表示否),此规则同样适用于 odps建表。 说明:任何...
  • laoma_8888
  • laoma_8888
  • 2017年11月30日 14:13
  • 72

用索引来实现幂等

随着大数据的到来,分布式处理变得越来越火,而且分布式中的一致性事务又是重中之重。当然我们今天的重点不在于介绍如何保证分布式事务中的一致性,而是在保证事务一致性的过程中会出现一系列的补偿机制,这就涉及到...
  • u010168160
  • u010168160
  • 2016年06月17日 11:25
  • 882

mysql慢查询解决方法

实际问题描述在做后台数据统计的时候,需要统计用户的已回答数、未回答数、平均回答时间等其他数据,执行sql语句的时候耗时40多秒。mysql慢查询解决方法1 .首先是优化sql语句,这个具体的细节就不说...
  • zsl10
  • zsl10
  • 2016年07月29日 14:59
  • 349

学会读懂 MySql 的慢查询日志

在前边的博客《何时、如何开启 MySql 日志?》中,我们了解到了如何启用 MySql 的慢查询日志。今天我们来看一下如何去读懂这些慢查询日志。在跟踪慢查询日志之前,首先你得保证最少发生过一次慢查询。...
  • defonds
  • defonds
  • 2015年07月14日 15:21
  • 2752

建立索引来优化SQL查询

 对已知查询SQL优化,通常可通过建立合适的索引来实现。在初期优化中,简单的几个索引,可能就会达到出入意料的结果。优化前后的效果可执行计划来判断。 以Oracle为例,查看静态SQL的执行计划的方法比...
  • Dream_chaser
  • Dream_chaser
  • 2011年03月27日 13:45
  • 418

为什么Oracle数据库不用索引来查找数据?

当你运用SQL语言,向数据库发布一条查询语句时,ORACLE将伴随产生一个“执行计划”,也就是该语句将通过何种数据搜索方案执行,是通过全表扫描、还是通过索引搜寻等其它方式。搜索方案的选用与ORACLE...
  • sopost
  • sopost
  • 2011年03月03日 09:55
  • 708
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于索引来解决慢查询的问题
举报原因:
原因补充:

(最多只允许输入30个字)