2016-02-24 108 views
2

我正在使用SQLite 3.11。我创建一个表如下:一个字段的后期计算

  CREATE TABLE MyTable (F1 INTEGER, F2 INTEGER, F3 INTEGER, F4 INTEGER); 

然后添加以下记录:

  INSERT INTO MyTable (F1, F2) Values (1, 1); 
      INSERT INTO MyTable (F1, F2) Values (1, 2); 
      INSERT INTO MyTable (F1, F2) Values (2, 2); 
      INSERT INTO MyTable (F1, F2) Values (2, 3); 

我想根据F1从MyTable的选择和排序,然后F3,和F4如下:

SELECT * FROM MyTable ORDER BY F1, F3, F4 

但是F3和F4是基于F1,F2计算的,计算起来有点费时。在这种情况下,是否有可能执行延迟计算来提高性能。

即:

  1. 比较两个记录与他们的F1值。如果它们不同,则直接返回订单。
  2. 如果它们的F1值相同,则计算F3值并根据F3进行排序。

这可能吗?

感谢

回答

0

只是一个想法,但你不能做一个多选?

据我所知,子查询需要先完成,然后才能被选中。

这就是我在说的。

SELECT F1, F2, F3, F4 
FROM (SELECT F1, F2, Some_Super_Complex_Calculation AS F3, Another_Super_Complex_Calculation AS F4 
     FROM MyTable) 
ORDER BY F1, F3, F4