通过PostgreSQL中的第二个Serial列提高应用程序速度

达里乌斯

编辑:(添加了说明)

我有一个存储一些数据的表,它具有以下所示的结构。

id  tparti_id    orde   desc
1   1            10      One thing
2   1            20      Another thing
3   1            30      Last task of the month
4   2            10      First of second month
5   2            20      Second and last of second month
6   3            10      First of third month

orde字段是具有相同tparti_id的行的序列,此值在我们的应用中用于对给定tparti_id的内容进行排序,用户可以对其进行重新排序以更改值。

存储的值来自文本文件,并由CakePHP应用程序解析。

当插入新行时,通过在orde中搜索当前值并添加10给定id来计算orde序列中的下一个值,如果未找到orde则返回10

public function nextOrden($tpid){
        $sql = "select orde from tdpies where tparti_id =".$tpid." order by orde desc limit 1;";
        $r = $this->query($sql,$cachequeries = false);

        if ($r){
            $res = $r[0][0]['orde'] + 10;
        } else {
            $res = 10;
        }

        return $res;

    }    

插入几条记录时可以正常工作,但是插入数千条记录时很耗时。

如何提高性能:

  1. 创建新记录时使用触发器?
  2. 使用新的序列,里面有一些诡计吗?

谢谢

戈登·利诺夫(Gordon Linoff)

您似乎拥有一个自动递增的id,因此可以orde在查询表时进行计算,而在创建表时可以进行计算

select p.*, 10 * (row_number() over (partition by tparti_id order by id)) as orde
from tdpies p;

如果要在上进行处理insert,则在上添加一个索引tdpies(tparti_id, orde)在触发器内部,您将看到类似以下内容的内容:

new.orde := (select coalesce(max(orde), 0) + 10
             from tdpies p
             where p.tparti_id = new.tparti_id
            );

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过PostgreSQL中的第二个串行列提高应用程序速度

来自分类Dev

如何在WPF的第二个屏幕中启动第二个应用程序?

来自分类Dev

使用第二个应用程序中的模型测试Django应用程序

来自分类Dev

如何在Spring Boot应用程序中创建第二个RedisTemplate实例

来自分类Dev

如何在Phusion Passenger中添加第二个应用程序?

来自分类Dev

从Android应用程序中的第二个线程更新视图

来自分类Dev

从第二个活动中打开应用程序

来自分类Dev

AngularJS:模板中的第二个应用程序不起作用

来自分类Dev

在 Heroku 中运行第二个非网络 java 应用程序进程

来自分类Dev

如何用第二个JFrame替换应用程序中的第一个JFrame?

来自分类Dev

使用第一个集线器中的第二个集线器时,应用程序挂起

来自分类Dev

在RVM / ruby 2.1.0中使“ rails new”适用于第二个应用程序

来自分类Dev

Xamarin,当在第二个活动中调用完成()时应用程序结束

来自分类Dev

div 中的第二个 Angularjs 应用程序表达式不起作用

来自分类Dev

应用程序工作表功能VLookup第二个变量

来自分类Dev

如何从应用程序cfc文件引用第二个DB

来自分类Dev

Applescript从第二个桌面获取应用程序

来自分类Dev

现代UI应用程序固定到第二个屏幕

来自分类Dev

Angular JS-第二个应用程序和控制器

来自分类Dev

如何在第二个活动中使用“后退”按钮关闭应用程序?

来自分类Dev

使用第二个数据库测试Yii REST应用程序

来自分类Dev

在segue中加载第二个应用程序界面

来自分类Dev

使第二个PyQt4 QMainWindow与主应用程序“可分离”

来自分类Dev

以管理员身份启动应用程序的第二个实例

来自分类Dev

当应用程序第二次启动时显示第二个 ViewController

来自分类Dev

停止直接执行主应用程序并从第二个应用程序执行吗?

来自分类Dev

处理URL后打开原始应用程序以在Android上启动第二个应用程序

来自分类Dev

在我的本地仓库中添加了第二个Heroku应用程序,我被拒绝访问我的应用程序

来自分类Dev

通过通道工厂的WCF到WCF调用在第一个或第二个应用程序中排队

Related 相关文章

  1. 1

    通过PostgreSQL中的第二个串行列提高应用程序速度

  2. 2

    如何在WPF的第二个屏幕中启动第二个应用程序?

  3. 3

    使用第二个应用程序中的模型测试Django应用程序

  4. 4

    如何在Spring Boot应用程序中创建第二个RedisTemplate实例

  5. 5

    如何在Phusion Passenger中添加第二个应用程序?

  6. 6

    从Android应用程序中的第二个线程更新视图

  7. 7

    从第二个活动中打开应用程序

  8. 8

    AngularJS:模板中的第二个应用程序不起作用

  9. 9

    在 Heroku 中运行第二个非网络 java 应用程序进程

  10. 10

    如何用第二个JFrame替换应用程序中的第一个JFrame?

  11. 11

    使用第一个集线器中的第二个集线器时,应用程序挂起

  12. 12

    在RVM / ruby 2.1.0中使“ rails new”适用于第二个应用程序

  13. 13

    Xamarin,当在第二个活动中调用完成()时应用程序结束

  14. 14

    div 中的第二个 Angularjs 应用程序表达式不起作用

  15. 15

    应用程序工作表功能VLookup第二个变量

  16. 16

    如何从应用程序cfc文件引用第二个DB

  17. 17

    Applescript从第二个桌面获取应用程序

  18. 18

    现代UI应用程序固定到第二个屏幕

  19. 19

    Angular JS-第二个应用程序和控制器

  20. 20

    如何在第二个活动中使用“后退”按钮关闭应用程序?

  21. 21

    使用第二个数据库测试Yii REST应用程序

  22. 22

    在segue中加载第二个应用程序界面

  23. 23

    使第二个PyQt4 QMainWindow与主应用程序“可分离”

  24. 24

    以管理员身份启动应用程序的第二个实例

  25. 25

    当应用程序第二次启动时显示第二个 ViewController

  26. 26

    停止直接执行主应用程序并从第二个应用程序执行吗?

  27. 27

    处理URL后打开原始应用程序以在Android上启动第二个应用程序

  28. 28

    在我的本地仓库中添加了第二个Heroku应用程序,我被拒绝访问我的应用程序

  29. 29

    通过通道工厂的WCF到WCF调用在第一个或第二个应用程序中排队

热门标签

归档