我有一对变量列表及其存储在数据库中的相关值。
var1 var2 corr
我的算法涉及按降序对列表进行排序(基于相关值),然后检索前k个对。
这个算法的时间复杂度是多少?这取决于我如何排序吗?我使用ORDER BY子句使用sql查询对列表进行排序。
答案 0 :(得分:3)
评论太长了。
SQL数据库管理多级内存 - 基本上是内存中的数据页和磁盘上的存储。传统的复杂度测量方法并不能很好地捕获SQL查询的性能特征。为此,您需要了解执行计划,基础算法以及与可用资源相关的数据大小。
我的下一步反应是:如果您需要对数据进行排序,请对数据进行排序。时间复杂度与它有什么关系?也就是说,你还有其他什么选择?
通常,在数据库中实现的排序将具有O(n log(n))复杂度。但是,实际速度在很大程度上取决于其他因素。列上的索引降低了复杂性。适合内存的数据更快。适合单个页面的数据可能会更快。
我不确定你的意思是“这取决于我如何分类它?”。使用order by
子句,只有一种方法可以在SQL中表达排序,并且它没有很多选项。按asc
与desc
排序对性能的影响不大或影响最小。