zoukankan      html  css  js  c++  java
  • Mysql索引创建及其用法

     假如你有一个表,

    SQL>CREATETABLEtest_tab(
    2idINT,
    3nameVARCHAR(10),
    4ageINT,
    5valVARCHAR(10)
    6);

    你的业务,有一个查询,是
    SELECT*FROMtest_tabWHEREname=一个外部输入的数据

    刚开始,数据不多的时候,执行效果还不错。
    随着数据量的增加,这个查询,执行起来,越来越慢了。

    然后在name上面建立了索引
    CREATEINDEXidx_test4_nameONtest_tab(name);
    这样,可以加快前面那个查询的速度。

    但是,某天,你执行了下面这个SQL,发现速度又慢了
    SELECT*FROMtest_tabWHEREage=25
    为啥呢?因为age字段上面,没有索引
    索引只在name上面有

    换句话说,也就是WHERE里面的条件,会自动判断,有没有可用的索引,如果有,该不该用。


    多列索引,就是一个索引,包含了2个字段。

    例如:
    CREATEINDEXidx_test_name_ageONtest_tab(name,age);

    那么
    SELECT*FROMtest_tab
    WHERE
    nameLIKE'张%'
    ANDage=25
    这样的查询,将能够使用上面的索引。

    多列索引,还有一个可用的情况就是,某些情况下,可能查询,只访问索引就足够了,不需要再访问表了。例如:

    SELECT
    AVG(avg)AS平均年龄
    FROM
    test_tab
    WHERE
    nameLIKE'张%'

    这个时候,name与age都包含在索引里面。查询不需要去检索表中的数据
  • 相关阅读:
    多任务拷贝小案例
    进程池
    进程间的通信
    互斥锁
    创建函数/类的线程
    udp/tcp流程
    发布模块
    私有属性/方法的访问
    深入了解jQuery之整体架构
    (转)前端面试题
  • 原文地址:https://www.cnblogs.com/pursol/p/6508328.html
Copyright © 2011-2022 走看看