我想在 MySQL 中通过两个字段搜索一个表:
select * from table where
90 < x and x < 100 and
50 < y and y < 60
如果优化此搜索的效率如何? O(日志(n))?
它将实现什么类型的索引和算法? (如果使用标准 B 树或 HashMap ,我说的 O(n.log(n)) 是否正确?)
谢谢
最佳答案
MySQL 中的复杂性通常是不可预测的,以至于用大 O 表示法来表达它几乎毫无意义。关于算法性能的计算机科学类型理论在这种情况下完全崩溃。
最大的问题是 I/O 开销,一旦您需要进行任何类型的磁盘访问,就无法判断该操作需要多长时间。这可能是几毫秒,也可能是几秒,具体取决于系统的负载情况。
通常,您应该进行基准测试以确定您的特定系统和配置的性能特征,即便如此,它也只能给您一个概念。
只有当整个工作集都在内存中并且访问时间在所有关联数据中保持一致时,这些 Big-O 算法才有意义。
关于Mysql实现及多字段查询效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12821936/