zoukankan      html  css  js  c++  java
  • mysql索引对单表查询的影响

    索引被用来快速找出在一个列上用一特定值的行。没有索引,MySQL不得不首先以第一条记录开始并然后读完整个表直到它找出相关的行。表越大,花费时间越多。
    如果表对于查询的列有一个索引,MySQL能快速到达一个位置去搜寻到数据文件的中间,没有必要考虑所有数据。如果一个表有1000 行,这比顺序读取至少快100倍。注意你需要存取几乎所有1000行,它较快的顺序读取,因为此时我们避免磁盘寻道。

    例如对下面这样的一个student表:

    mysql>SELECT * FROM student;
    

     

    这样,我们试图对它进行一个特定查询时,就不得不做一个全表的扫描,速度很慢。
    例如,我们查找出所有english成绩不及格的学生:

    mysql>SELECT name,english FROM student WHERE english<60;
    

    其中,WHERE从句不得不匹配每个记录,以检查是否符合条件。对于这个较小的表也许感觉不到太多的影响。但是对于一个较大的表,例如一个非常大的学校,我们可能需要存储成千上万的记录,这样一个检索的所花的时间是十分可观的。
    如果,我们为english列创建一个索引:

    mysql>ALTER TABLE student ADD INDEX (english) ;

    再执行下述查询:

    mysql>SELECT name,english FROM user WHERE english<60;

    结果为:

    可以发现,这个结果与未索引english列之前的不同,它是排序的,原因正式如上所述。

    别让生活压力挤走快乐~
  • 相关阅读:
    自定义控件类
    初探ListView和Adapter
    探究android控件及布局
    页面布局之一边固定一边自适应
    cavans 文字换行
    移动开发01 页面取消横向滚动条
    移动端rem,scale动态设置
    map,area标签
    css3属性——border-radius用法
    z-index要同级比较,absolute包含块外有overflow-hidden
  • 原文地址:https://www.cnblogs.com/cookiehu/p/5148290.html
Copyright © 2011-2022 走看看