• Mysql索引分类和索引优化


    一、 MySQL: 索引以B树格式保存

    Memory存储引擎可以选择Hash或BTree索引,Hash索引只能用于=或<=>的等式比较。

    1、普通索引:create index on Tablename(列的列表)

    alter table TableName add index (列的列表)

    create table TableName([...], index [IndexName] (列的列表)

    2、唯一性索引:create unique index

    alter ... add unique

    主键:一种唯一性索引,必须指定为primary key

    3、全文索引:从3.23.23版开始支持全文索引和全文检索,FULLTEXT,

    可以在char、varchar或text类型的列上创建。

    4、单列索引、多列索引:

    多个单列索引与单个多列索引的查询效果不同,因为:

    执行查询时,MySQL只能使用一个索引,会从多个索引中选择一个限制最为严格的索引。

    5、最左前缀(Leftmost Prefixing):多列索引,例如:fname_lname_age索引,以下的搜索条件MySQL都将使用

    fname_lname_age索引:firstname,lastname,age;firstname,lastname;firstname,其他情况将不使用。

    二、根据sql查询语句确定创建哪种类型的索引,如何优化查询

    选择索引列:

    a.性能优化过程中,选择在哪个列上创建索引是最重要的步骤之一。可以考虑使用索引的主要有

    两种类型的列:在where子句中出现的列,在join子句中出现的列。

    b.考虑列中值的分布,索引的列的基数越大,索引的效果越好。

    c.使用短索引,如果对字符串列进行索引,应该指定一个前缀长度,可节省大量索引空间,提升查询速度。

    d.利用最左前缀

    e.不要过度索引,只保持所需的索引。每个额外的索引都要占用额外的磁盘空间,并降低写操作的性能。

    在修改表的内容时,索引必须进行更新,有时可能需要重构,因此,索引越多,所花的时间越长。

    MySQL只对一下操作符才使用索引:<,<=,=,>,>=,between,in,

    以及某些时候的like(不以通配符%或_开头的情形)。

  • 相关阅读:
    ASP 调用dll(VB)及封装dll实例
    C#中的Dictionary简介
    C#中Dictionary、ArrayList、Hashtable和Array的区别
    类 Array Arraylist List Hashtable Dictionary
    利用ASP.NET AJAX的Timer讓GridView每隔一段時間做到自動換頁的功能
    nvmw install 失败. 需修改"Msxml2.XMLHTTP"为"Msxml2.ServerXMLHTTP"
    cyark
    [001] winnie the pooh
    把你的英语用起来-七天行动-置之死的而后生
    安卓模拟器还是"genymotion"最靠谱.
  • 原文地址:https://www.cnblogs.com/zzt-lovelinlin/p/9186989.html
Copyright © 2020-2023  润新知