1

我想通过 MySQL 中的两个字段搜索表:

select * from table where  
90 < x and x < 100 and 
50 < y and y < 60

如果优化,这个搜索的效率是多少?O(log(n))?

它会实现什么类型的索引和算法?(如果使用标准 B-tree 或哈希映射,我是否正确地说它将是 O(n.log(n))?)

谢谢

4

1 回答 1

1

MySQL 中的复杂性通常是不可预测的,以至于用 Big-O 表示法来表达它几乎没有意义。在这种情况下,关于算法性能的计算机科学类型理论完全分崩离析。

最大的问题是 I/O 开销,一旦您需要进行任何类型的磁盘访问,就无法知道该操作需要多长时间。它可能是几毫秒,也可能是几秒钟,具体取决于系统的负载情况。

通常,您应该进行基准测试以确定您的特定系统和配置的性能特征,即使那样它也只能给您一个想法。

这些 Big-O 算法只有在整个工作集都在内存中并且所有相关数据的访问时间一致时才有意义。

于 2012-10-10T14:40:41.687 回答