如何通过给每列赋予不同的权重来对结果进行排序?

时间:2015-11-21 05:55:34

标签: mysql sql-server logic

我想从sql数据库(mysql或sql server)对结果进行排序。但是有多个列,每列具有不同的权重,例如

SELECT F1,F2,F3 FROM mytable ORDER BY (F1*2+F2*7+F3)

但我担心处理时间太长,因为我的数据库可能有数百万条记录,因此对所有数据进行排序并计算所有记录的公式可能会非常慢,我怎样才能更快地完成此操作?

编辑:这些重量数不是常数

2 个答案:

答案 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)

@ MM93,想法很好。 看,有两种方法可以实现这一点。但两者都需要更多的信息。

1.取出所有需要的行而不进行排序。然后在前端排序。这可能很快。

  1. 像这样编写你的查询,
  2. 选择F1,F2,F3,F1 * 2 + F2 * 7 + F3作为NewColumn FROM mytable
  3. 然后在前端排序。