我想从sql数据库(mysql或sql server)对结果进行排序。但是有多个列,每列具有不同的权重,例如
SELECT F1,F2,F3 FROM mytable ORDER BY (F1*2+F2*7+F3)
但我担心处理时间太长,因为我的数据库可能有数百万条记录,因此对所有数据进行排序并计算所有记录的公式可能会非常慢,我怎样才能更快地完成此操作?
编辑:这些重量数不是常数
答案 0 :(得分:2)
如果您的号码不变,请创建computed column
ALTER TABLE mytable
ADD O_ComputedColumn AS (F1*2+F2*7+F3) PERSISTED
Here是计算列Persisted
查询:
SELECT F1,F2,F3
FROM mytable
ORDER BY O_ComputedColumn
这是Sql Server
。我从未尝试过试一试
答案 1 :(得分:1)
1.取出所有需要的行而不进行排序。然后在前端排序。这可能很快。
然后在前端排序。