哪些查询操作利用了索引?

时间:2016-05-02 12:18:43

标签: database indexing database-performance

我想知道哪种操作使用索引是有利的。

显然"喜欢" (没有模式匹配)和" ="会很好的。 我想>,<,> =,< =也会使用索引的优势。

但是还有其他操作可以利用索引吗?

2 个答案:

答案 0 :(得分:0)

如果我错过了整合:

加入可以使用索引。

排序操作也可以使用索引,例如:https://technet.microsoft.com/en-us/library/ms181154%28v=sql.105%29.aspx?f=255&MSPPError=-2147217396

使用索引验证唯一约束。

外键将在indexex上查找

答案 1 :(得分:0)

  

大多数涉及阅读任何数据的操作都将受益于   的索引。

数据存储在磁盘上。如果你试图在不使用索引的情况下获取数据,它将进行线性搜索,平均大小写复杂度为O(n / 2) - 这意味着,考虑到一般情况,将需要50万比较才能找到来自包含一百万条记录的数据集的数据点。但是,如果使用索引执行此操作,则将其降低到O(log(n))。这是http://bigocheatsheet.com/解释所有这些内容的图表:

enter image description here

想象一下你做的任何操作 - 这一切都归结为排序和搜索。无论是SELECT,UPDATE还是DELETE都无关紧要。

虽然索引可以加速系统,但只有在明智地使用索引时才会发生这种情况。在只写主数据库中,您可能不需要很多索引,因为每次插入记录时,都会有重新计算索引的开销。您可能希望将索引放在slave上,但经过仔细考虑后也是如此,因为如果有很多索引,ALTER将会非常昂贵。您还必须记住,索引会占用空间,尤其是文本列上的索引。

关于 LIKE

的问题

LIKE 也会使用索引,即使在模式匹配中也是如此,但只有当你这样做时才会使用:

LIKE "something%"

写作时不会起作用

LIKE "%something%"

关系数据库中的模式搜索不是一个非常可扩展的想法。根据用例,您可能希望选择ElasticSearch将您带回家。但是,有些RDBMS提供全文功能。