索引mysql列是否有好处,如果我在每一行中总是有不同的值?

时间:2015-05-25 05:19:12

标签: mysql database-design indexing

问题适用于timestamp之类的行,其中每行都存储不同的值。

我已经在搜索stackoverflow并阅读有关索引的内容,但如果没有一个值等于另一个值,我不理解利润。因此,索引基数将等于行数。有什么好处?

2 个答案:

答案 0 :(得分:3)

这种专栏实际上是一个很好的索引候选者,最好是一个独特的索引。

表是未排序的数据集,因此在不了解表的情况下,数据库必须按顺序遍历整个表以查找您要查找的行(O(n)复杂度,其中n是数字的行)。

索引本质上是一个以排序方式存储值的树,它允许数据库智能地找到您要查找的行(O(log n))。此外,使索引唯一告诉数据库每个时间戳值只能有一行,因此一旦检索到一行,数据库就可以停止搜索更多内容。

假设您根据时间戳搜索行,这种索引的性能优势应该很大。

答案 1 :(得分:2)

索引是键值和检索指针之间的映射。如果使用索引的策略看起来是最佳的,则DBMS在查询期间使用索引 如果索引永远不会被使用,那么它就没用了。

索引可以基于单个键控值或基于一系列键值(取决于索引类型)加速查找,或者在仅查询需要键的情况下允许仅索引检索。根据桌子的大小和各种其他因素,加速可以低至两个一个或高达一百个。

如果您的时间戳字段从未在查询的WHERE子句或ON子句中使用,那么您最好没有索引。选择指数的艺术比这更深入,但这是一个开始。