代码之家  ›  专栏  ›  技术社区  ›  John

MariaDB指数比较

  •  0
  • John  · 技术社区  · 6 年前

    HeidiSQL 我开始研究索引,因为有一个表运行查询的时间明显更长,因为它填充了1249848行。几乎每个表(除了合理的例外)都有一个主键;这很直截了当。我遇到了 Socratica's SQL Index 视频,这是一个了不起的手表,为那些有限的SQL经验,虽然不幸的是,她没有澄清哪种类型的索引应该使用。

    primary , key , unique , fulltext 和 spatial 索引,至少是MariaDB,过去几年我一直在专门使用MariaDB。我计划添加几个索引的表是 date 和 engine 我的spider日志表的列。我用 DATETIME 和 VARCHAR() 对于那些相应的列,我知道我想使用哪种类型的索引,尽管我非常希望能将索引与建议进行比较。手册包括 尽管这些索引似乎并没有完全涵盖它们与其他索引相比最适合哪组数据的对比。

    0 回复  |  直到 6 年前
        1
  •  1
  •   Kaii    6 年前

    只能有一个 primary 每个表上的键,并且应该始终定义一个。表数据(在磁盘上)将以一种搜索主键非常快的方式存储(打电话 Clustered Index

    在大多数应用程序中,主键是 auto_increment surrogate key .
    natural primary key ,这是一个唯一的标识符已经出现在您的数据,如序列号,MAC地址,社会保险号码。。。

    在主键中搜索是检索数据的最快方法,但只能有一种。

    KEY

    对于许多用例,创建 covering index
    KEY(lastname, surname) 加快查询速度,如
    WHERE lastname="Anderson" AND firstname="Thomas"

    WHERE lastname="Anderson"
    但不是
    WHERE firstname="Thomas"

    不是每个查询都能有效地使用一个索引,也不是所有的索引都有用,在高写负载下,最好有几个好的索引,而不是很多差的索引。

    索引的写开销很大:行上的每一次更新都意味着对 每个


    unique 键确保只有一行可以保存属性的相同值。这通常用于强制执行业务规则,如“帐户的电子邮件地址必须唯一”/“每个电子邮件只能有一个帐户”。

    fulltext 只能应用于 TEXT 列,实际上是嵌入在数据库中的小型搜索引擎。你可以用 AND 和 OR MATCH 文本搜索运算符。

    spatial 用于坐标系/几何图形,不能用于其他任何对象。