- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么加入这么慢?我该如何解决?
=> EXPLAIN ANALYZE SELECT "acts".*
FROM "acts"
LEFT OUTER JOIN "tasks" ON "acts"."id" = "tasks"."act_id"
WHERE "acts"."state" IN (0,
1)
AND ((tasks.id IS NULL
AND acts.id IN
(SELECT "act_participants"."act_id"
FROM "act_participants"
WHERE "act_participants"."user_id" = 2
AND "act_participants"."nature" = 0))
OR (acts.id IN
(SELECT "tasks"."act_id"
FROM "tasks"
INNER JOIN "task_participants" ON "task_participants"."task_id" = "tasks"."id"
WHERE (tasks.state != 1)
AND (tasks.state != 2)
AND "task_participants"."user_id" = 2
AND "task_participants"."state" = 0
AND "task_participants"."nature" = 0)))
ORDER BY acts.created_at ASC
LIMIT 50;
这是查询计划
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Limit (cost=786.65..967.73 rows=50 width=87) (actual time=951.623..1466.844 rows=1 loops=1)
-> Nested Loop Left Join (cost=786.65..329027.62 rows=90638 width=87) (actual time=951.620..1466.839 rows=1 loops=1)
Filter: (((tasks.id IS NULL) AND (hashed SubPlan 1)) OR (hashed SubPlan 2))
Rows Removed by Filter: 178275
-> Index Scan using index_acts_on_created_at on acts (cost=0.43..62194.86 rows=181276 width=87) (actual time=0.022..714.109 rows=175433 loops=1)
Filter: (state = ANY ('{0,1}'::integer[]))
Rows Removed by Filter: 956367
-> Index Scan using index_tasks_on_act_id on tasks (cost=0.43..1.45 rows=1 width=8) (actual time=0.002..0.003 rows=1 loops=175433)
Index Cond: (acts.id = act_id)
SubPlan 1
-> Index Scan using index_act_participants_on_user_id on act_participants (cost=0.43..219.34 rows=44 width=4) (actual time=0.019..0.117 rows=37 loops=1)
Index Cond: (user_id = 2)
Filter: (nature = 0)
Rows Removed by Filter: 22
SubPlan 2
-> Nested Loop (cost=0.85..566.32 rows=12 width=4) (actual time=0.099..0.099 rows=0 loops=1)
-> Index Scan using index_task_participants_on_user_id on task_participants (cost=0.43..371.68 rows=23 width=4) (actual time=0.097..0.097 rows=0 loops=1)
Index Cond: (user_id = 2)
Filter: ((state = 0) AND (nature = 0))
Rows Removed by Filter: 50
-> Index Scan using tasks_pkey on tasks tasks_1 (cost=0.43..8.45 rows=1 width=8) (never executed)
Index Cond: (id = task_participants.task_id)
Filter: ((state <> 1) AND (state <> 2))
Total runtime: 1466.947 ms
(24 rows)
最佳答案
基于数字字段进行JOINS,并尝试使用子查询来减少项目
关于sql - 为什么加入需要花费大量时间来执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52125123/
我一直在读一本分配给类(class)的书,它提到数组访问需要 O(1) 时间。我意识到这非常快(也许尽可能快),但是如果您有一个循环必须多次引用它,那么分配一个临时变量以在数组中查找值有什么好处吗?或
我一直试图找出为什么这个查询花了这么长时间。以前,它的执行时间约为 150 毫秒到 200 毫秒,但现在需要 25 秒或更长时间。这是从昨晚到今天之间的事。唯一改变的就是将数据添加到表中。 根据下面的
我有一个 ng repeat 重复数据。 - data.image(src)部分为null,src=null的不再重复。 我用一个简单的 ng-if 解决了它。
我有一个包含大量测试的 Laravel 项目。我正在使用 pcov 来计算代码覆盖率,大约需要 4 分钟。但是 pcov 不支持分支覆盖,所以我决定使用 xdebug。 使用 xdebug 测试执行,
我已经被这个问题困扰了一段时间了,我被难住了。 Automapper 需要 4 秒来映射 19 个对象。在我的机器(24GB 内存,3.6Ghz i7)上,该操作应该花费毫秒或纳秒。 这是映射调用。
我有一个包含大量测试的 Laravel 项目。我正在使用 pcov 来计算代码覆盖率,大约需要 4 分钟。但是 pcov 不支持分支覆盖,所以我决定使用 xdebug。 使用 xdebug 测试执行,
我在机器 A 上有一个 java 进程通过 TCP 与机器 B 上的 Tomcat 通信。 TCP 连接(只是 syn-syn/ack 交换)始终需要 100 毫秒的数量级,而 ping 请求需要 1
我做了一项任务,从 sqlserver 获取超过 200 万条记录并将它们填充到 Asp.net GridView 中。 问题是,查询需要超过 2 分钟才能获得记录,而我的查询现在已经完全优化。 当我
我希望将 165 秒变成 2:40 而不是 0:2:45 函数需要能够适应秒值的大小。 我知道有无数种方法可以做到这一点,但我正在寻找一种干净的方法来做到这一点,除了 jQuery 之外没有任何外部库
我是一名优秀的程序员,十分优秀!