zoukankan      html  css  js  c++  java
  • MySQL(13):索引

        1.索引的引入

        思考:在图书馆中,如何找到一本书呢?

        一般的应用系统,读写比例在10:1左右,而且插入操作和更新操作很少出现性能问题,遇到最多的,也是最容易出现问题的,还是一些复杂的查询操作,所以查询语句的优化显然是重中之重。当数据库中数据量很大时,查找数据会变得很慢,而索引能提高数据访问性能。主键和唯一索引,都是索引,可以提高查询速度。

        

        2.建索引时选择列的数据类型

        (1)越小的数据类型通常越好:越小的数据类型通常在磁盘、内存和CPU缓存中都只需要更少的空间,处理起来更快。

        (2)简单的数据类型更好:整型数据比起字符,处理开销更小,因为字符串的比较更复杂。

        (3)尽量避免null,应该指定列为not null,除非你想存储null。在MySQL中,含有空值的列很难进行查询优化,因为他们使得索引、索引的统计信息以及比较运算更加复杂。你应该用0、一个特殊的值或者一个空串代替空值。


        3.索引操作

        (1)索引分单列索引和组合索引

            1)单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。

            2)组合索引,即一个索引包含多个列

        (2)查看索引

    show index from tableName;

        (3)创建索引

        select语句中的where部分常用到那个字段就用哪个字段建索引。

    create index indexName on tableName(username(length));
    //tableName为表名,username为字段名,length为字段长度
    
    create index indexName on tableName(username1(length1),username2(length2),username3(length3)...);
    //为多个字段同时创建索引的做法

        (4)删除索引

    drop index [indexname] on tableName;

        4.索引缺点

        (1)虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行insert、update和delete。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。

        (2)建立索引会占用磁盘空间的索引文件。


        5.示例

    开启运行时间监测
    set profiling=1;
    
    执行查询语句
    select * from areas where atitle='北京市';
    
    查看执行的时间
    show profiles;
    
    为表areas的atitle列创建索引
    create index titleIndex on areas(atitle(20));
    
    执行查询语句
    select * from areas where atitle='北京市';
    
    //对有索引的字段进行查找,在创建select语句的where部分时最好将等值放前,范围值放后,如下句
    //where gender=0 and isDelete=0 and birtday>'1990-1-1';注意:该语句表名了datetime类型是可以比较大小的。。
    //查找有索引的字段时,可以如上句一样用and,最好不要用or,这会使索引效率变得很低
    
    再次查看执行的时间
    show profiles;
    
    可以创建一个表,插入10万条数据,查看有无索引的区别

  • 相关阅读:
    录毛线脚本,直接手写接口最简洁的LoadRunner性能测试脚本(含jmeter脚本)
    LoadRunner回放乱码
    结构体练习(C)
    MongoDB在windows及linux环境下安装
    pycharm 快捷键
    倒置输入的整数(C、Python)
    mysql常用操作(测试必备)
    wireshark配合jmeter测试webservice接口
    子网掩码的作用
    java 获取对象的数据类型、数据类型转换
  • 原文地址:https://www.cnblogs.com/wangchongzhangdan/p/9409603.html
Copyright © 2011-2022 走看看