开发者社区> 问答> 正文

MariaDB索引比较

已解决

我正在使用HeidiSQL,并且开始研究索引,因为特别是有一张表由于填充了1,249,848行,因此运行查询的时间明显更长。几乎每个表(有合理的例外)都有一个主键;这很简单。我遇到了Socratica的SQL Index视频,这对于那些一般SQL经验有限的人来说是一个很棒的手表,尽管不幸的是,她未能阐明应该使用哪种类型的索引。

HeidiSQL允许创建primary,key,unique,fulltext和spatial索引,至少有MariaDB的,我一直在专门使用MariaDB的,在过去几年。我计划添加几个索引的表用于蜘蛛日志表的date和engine列。我使用DATETIME和VARCHAR()分别用于这些列,因此我对要使用的索引类型有一个想法,尽管我非常希望将索引与建议进行比较。该手册涵盖哪些指标做虽然不太似乎涵盖组数据,他们是最适合在比较彼此指数的对比。

展开
收起
保持可爱mmm 2019-12-12 15:43:04 449 0
1 条回答
写回答
取消 提交回答
  • 采纳回答

    primary每个表上只能有一个键,并且应该始终定义一个键。表数据(在磁盘上)将以快速搜索主键的方式存储。(称为聚簇索引)

    在大多数应用程序中,主键是代理键。 但是,您也可以选择一个自然主键,它是数据中已经存在的唯一标识符,例如序列号,MAC地址,社会保险号等。auto_increment

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

    当谈到索引以加快搜索速度时,人们通常指的是简单KEYs,也称为“辅助键”。

    对于许多用例,创建包含多个属性的“ 覆盖索引 ” 很有用。 即KEY(lastname, surname)加快查询 WHERE lastname="Anderson" AND firstname="Thomas" 以及 WHERE lastname="Anderson"

    了解应用程序执行得最多的查询并为这些查询设计索引非常重要。

    并非每个查询都可以有效地使用索引,也不是所有索引都有用,并且在高写入负载下,拥有几个好索引比许多差的索引更好。

    索引写起来很昂贵:连续的每次更新也意味着每个索引的更新!

    其他类型是特殊的:

    unique键确保仅一行可以为属性保留相同的值。通常用于执行诸如“帐户的电子邮件地址必须唯一” /“每个电子邮件仅一个帐户”之类的业务规则。

    fulltext只能应用于TEXT列,实际上是嵌入在数据库中的小型搜索引擎。您可以使用AND和OR条件通配符使用特殊MATCH运算符进行文本搜索。

    并且spatial用于坐标系/几何,不能用于其他任何东西。 问题来源于stack overflow

    2019-12-12 15:43:21
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
从花农到MySQL大 立即下载
从华农到MySQL大神 立即下载
MySQL5.7 让优化更轻松 立即下载