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列之前的不同,它是排序的,原因正式如上所述。

    别让生活压力挤走快乐~
  • 相关阅读:
    java持续添加内容至本地文件
    ArrayList与LinkedList的区别,如何减少嵌套循环的使用
    linux系统设置允许密码登录
    postgreSQL格式化时间的函数详解
    POSTGRESQL日期函数大全
    RESTful API规范
    ASP.NET Core实践:ABP模块化&统一返回结果
    ASP.NET Core实践:中间件
    Salesforce经历
    Git常用命令整理
  • 原文地址:https://www.cnblogs.com/cookiehu/p/5148290.html
Copyright © 2011-2022 走看看