我正在使用HeidiSQL,并且开始研究索引,因为特别是有一张表由于填充了1,249,848行,因此运行查询的时间明显更长。几乎每个表(有合理的例外)都有一个主键;这很简单。我遇到了Socratica的SQL Index视频,这对于那些一般SQL经验有限的人来说是一个很棒的手表,尽管不幸的是,她未能阐明应该使用哪种类型的索引。
HeidiSQL允许创建primary,key,unique,fulltext和spatial索引,至少有MariaDB的,我一直在专门使用MariaDB的,在过去几年。我计划添加几个索引的表用于蜘蛛日志表的date和engine列。我使用DATETIME和VARCHAR()分别用于这些列,因此我对要使用的索引类型有一个想法,尽管我非常希望将索引与建议进行比较。该手册涵盖哪些指标做虽然不太似乎涵盖组数据,他们是最适合在比较彼此指数的对比。
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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。