在表中为同一列提供多个索引是一个好习惯吗?
EG。表A包含列col1,col2,col3,col4,col5,col6
索引
Index1
on(col1,col2,col3)Index2
on(col4,col2,col6)Index3
on(col2,col1,col3,col4,col5)在这种情况下,col1,col2,col3
是表A的多个索引的一部分。仅single index
的每一列都不够吗?
在same column
中使用multiple index
有什么用?请澄清。
答案 0 :(得分:0)
取决于;)
在很多情况下,让几个索引包含相同的列是非常有用的。
另见Ask Tom的这篇文章: Column order in Index
索引是否有帮助取决于您的数据和查询。特别是您的查询返回的记录百分比很重要。
以下示例稍微简化了一下,但一般情况下系统的工作原理如下:
想象一下,您的数据库在每个数据库块上存储10条记录,并且您的查询必须返回所有记录的10%。在这种情况下,必须返回每10条记录。在最坏的情况下,您必须读取每个数据库块(全表扫描)。在这种情况下,索引将减慢查询速度,因为您必须另外读取索引。
何时使用索引有不同的意见。我的经验法则是:
如果选择1%或更少,那么索引是好的
如果选择10%或更多,则全表扫描是好的
其他(1%-9%)需要更详细的分析