在您选择的列上添加索引会加快查询速度吗?

Rob*_*970 4 php mysql sql indexing performance

我有一个相当常见的设置,我有一个标签和记录对的表.查询它很慢,因此在我查询的标记列中添加索引有助于加快速度.

tag  | site
123  | 456
789  | 101

我的问题是,将这两个列的索引添加为一个索引是否有益.它永远不会被网站选中,这样做有什么好处?我也不能保证每次配对都是独一无二的而不做一些改变但如果我这样做会对性能有帮助吗?

典型的查询可能如下所示:

SELECT site,tagFROM sitetagsWHERE tag='123'OR tag='789'

Zam*_*ara 5

如果你总是搜索tag那么你只需要索引tag列.

在未使用时将列添加到索引,在插入或更新记录时会引入不必要的开销,并且还会占用更多存储空间.

但是复合索引(tag,site)可能会提供额外的优化,因为MySQL只需要读取索引来满足您的查询(EXPLAIN通常将此优化标记为using index).

如果您的操作主要是读取而不是写入,那么使用复合索引可能不是一个坏主意.

如果tag列具有高基数会更好,这意味着它们的值很可能在每行之间不同.

但我建议你先咨询EXPLAIN输出.