- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我设法编写查询以获取正确的数据,但对我来说它看起来很糟糕,因为我不得不在查询中使用查询 3 次,甚至 DOE 查询性能现在也很好,大约 700 毫秒,我担心它会在未来变慢何时会有更多数据需要处理。任何关于这有多糟糕以及我如何优化它的信息将不胜感激。
编辑:
我忘了提到表 s3 和 s14 有多行具有相同的 parcelno,我总是需要两个表中的最新行(由 sdate 和 stime 确定)。如果来自 s14 的最新行比来自 s3 的最新行更新,或者来自 s3 列 emadr2 的最新行与表 d 中的列 parcelshop_id 具有相同的值,则不显示数据。请记住,这些表不是我创建的,我只是从中读取数据。
SELECT
q1.ddepot,
q1.parcelno,
q1.sdate,
q1.stime,
q1.dpostal,
q1.service,
q1.lorry,
q1.zc5x3,
q1.parcelshop_id,
q1.country,
q1.dname1
FROM(
SELECT DISTINCT ON (q.parcelno) q.* FROM(
SELECT
d.ddepot,
d.parcelno,
s3.sdate,
s3.stime,
d.dpostal,
d.service,
s3.lorry,
s3.zc5x3,
d.parcelshop_id,
s3.country,
d.dname1,
s3.emadr1,
s3.emadr2
FROM dispatcher.detour_avis d
LEFT JOIN scans.scandata03 s3 ON d.parcelno = s3.parcelno
LEFT JOIN scans.scandata14 s14 ON d.parcelno = s14.parcelno
WHERE
d.ddate > (NOW() - interval '5 day')
AND d.parcelshop_id IS NOT NULL
AND s3.parcelno IS NOT NULL
AND (s14.parcelno IS NULL OR (s14.sdate + s14.stime)::timestamp without time zone < (s3.sdate + s3.stime)::timestamp without time zone)
ORDER BY s3.sdate, s3.stime DESC
)q
ORDER BY q.parcelno
) q1
WHERE q1.parcelshop_id != q1.emadr2
解释(分析,详细):
Subquery Scan on q1 (cost=68552.93..68554.90 rows=84 width=68) (actual time=701.318..701.324 rows=4 loops=1)
Output: q1.ddepot, q1.parcelno, q1.sdate, q1.stime, q1.dpostal, q1.service, q1.lorry, q1.zc5x3, q1.parcelshop_id, q1.country, q1.dname1
Filter: ((q1.parcelshop_id)::text <> (q1.emadr2)::text)
Rows Removed by Filter: 2
-> Unique (cost=68552.93..68553.85 rows=84 width=87) (actual time=701.310..701.314 rows=6 loops=1)
Output: d.ddepot, d.parcelno, s3.sdate, s3.stime, d.dpostal, d.service, s3.lorry, s3.zc5x3, d.parcelshop_id, s3.country, d.dname1, s3.emadr1, s3.emadr2
-> Sort (cost=68552.93..68553.39 rows=184 width=87) (actual time=701.309..701.311 rows=15 loops=1)
Output: d.ddepot, d.parcelno, s3.sdate, s3.stime, d.dpostal, d.service, s3.lorry, s3.zc5x3, d.parcelshop_id, s3.country, d.dname1, s3.emadr1, s3.emadr2
Sort Key: d.parcelno
Sort Method: quicksort Memory: 27kB
-> Sort (cost=68543.71..68544.17 rows=184 width=87) (actual time=701.269..701.269 rows=15 loops=1)
Output: d.ddepot, d.parcelno, s3.sdate, s3.stime, d.dpostal, d.service, s3.lorry, s3.zc5x3, d.parcelshop_id, s3.country, d.dname1, s3.emadr1, s3.emadr2
Sort Key: s3.sdate, s3.stime
Sort Method: quicksort Memory: 27kB
-> Nested Loop (cost=0.00..68536.79 rows=184 width=87) (actual time=689.775..701.238 rows=15 loops=1)
Output: d.ddepot, d.parcelno, s3.sdate, s3.stime, d.dpostal, d.service, s3.lorry, s3.zc5x3, d.parcelshop_id, s3.country, d.dname1, s3.emadr1, s3.emadr2
Join Filter: ((s14.parcelno IS NULL) OR ((s14.sdate + s14.stime) < (s3.sdate + s3.stime)))
Rows Removed by Join Filter: 16
-> Nested Loop Left Join (cost=0.00..57423.07 rows=455 width=74) (actual time=689.615..700.578 rows=14 loops=1)
Output: d.ddepot, d.parcelno, d.dpostal, d.service, d.parcelshop_id, d.dname1, s14.parcelno, s14.sdate, s14.stime
-> Seq Scan on dispatcher.detour_avis d (cost=0.00..49247.17 rows=455 width=47) (actual time=689.535..700.162 rows=11 loops=1)
Output: d.id, d.parcelno, d.service, d.detour_type, d.ddepot, d.dname1, d.dname2, d.dstreet, d.dhouseno, d.dcountryn, d.dstate, d.dpostal, d.dcity, d.dphone, d.odepot, d.oname1, d.oname2, d.ostreet, d.ohouseno, d.ocoun (...)
Filter: ((d.parcelshop_id IS NOT NULL) AND (d.ddate > (now() - '5 days'::interval)))
Rows Removed by Filter: 985930
-> Append (cost=0.00..17.92 rows=5 width=33) (actual time=0.036..0.036 rows=1 loops=11)
-> Seq Scan on scans.scandata14 s14 (cost=0.00..0.00 rows=1 width=58) (actual time=0.000..0.000 rows=0 loops=11)
Output: s14.parcelno, s14.sdate, s14.stime
Filter: ((d.parcelno)::text = (s14.parcelno)::text)
-> Index Scan using scandata14_2013_pl_indx on scans.scandata14_2013 s14_1 (cost=0.14..0.25 rows=1 width=27) (actual time=0.001..0.001 rows=0 loops=11)
Output: s14_1.parcelno, s14_1.sdate, s14_1.stime
Index Cond: ((d.parcelno)::text = (s14_1.parcelno)::text)
-> Index Scan using scandata14_2014_pl_indx on scans.scandata14_2014 s14_2 (cost=0.29..4.29 rows=1 width=27) (actual time=0.007..0.007 rows=0 loops=11)
Output: s14_2.parcelno, s14_2.sdate, s14_2.stime
Index Cond: ((d.parcelno)::text = (s14_2.parcelno)::text)
-> Index Scan using scandata14_2015_pl_indx on scans.scandata14_2015 s14_3 (cost=0.42..6.47 rows=1 width=27) (actual time=0.010..0.010 rows=0 loops=11)
Output: s14_3.parcelno, s14_3.sdate, s14_3.stime
Index Cond: ((d.parcelno)::text = (s14_3.parcelno)::text)
-> Index Scan using scandata14_2016_pl_indx on scans.scandata14_2016 s14_4 (cost=0.42..6.91 rows=1 width=27) (actual time=0.014..0.015 rows=1 loops=11)
Output: s14_4.parcelno, s14_4.sdate, s14_4.stime
Index Cond: ((d.parcelno)::text = (s14_4.parcelno)::text)
-> Append (cost=0.00..24.34 rows=5 width=80) (actual time=0.044..0.045 rows=2 loops=14)
-> Seq Scan on scans.scandata03 s3 (cost=0.00..0.00 rows=1 width=186) (actual time=0.000..0.000 rows=0 loops=14)
Output: s3.sdate, s3.stime, s3.lorry, s3.zc5x3, s3.country, s3.emadr1, s3.emadr2, s3.parcelno
Filter: ((s3.parcelno IS NOT NULL) AND ((d.parcelno)::text = (s3.parcelno)::text))
-> Index Scan using scandata03_2013_pl_indx on scans.scandata03_2013 s3_1 (cost=0.14..0.26 rows=1 width=51) (actual time=0.001..0.001 rows=0 loops=14)
Output: s3_1.sdate, s3_1.stime, s3_1.lorry, s3_1.zc5x3, s3_1.country, s3_1.emadr1, s3_1.emadr2, s3_1.parcelno
Index Cond: (((s3_1.parcelno)::text = (d.parcelno)::text) AND (s3_1.parcelno IS NOT NULL))
-> Index Scan using scandata03_2014_pl_indx on scans.scandata03_2014 s3_2 (cost=0.42..7.55 rows=1 width=53) (actual time=0.009..0.009 rows=0 loops=14)
Output: s3_2.sdate, s3_2.stime, s3_2.lorry, s3_2.zc5x3, s3_2.country, s3_2.emadr1, s3_2.emadr2, s3_2.parcelno
Index Cond: (((s3_2.parcelno)::text = (d.parcelno)::text) AND (s3_2.parcelno IS NOT NULL))
-> Index Scan using scandata03_2015_pl_indx on scans.scandata03_2015 s3_3 (cost=0.42..8.21 rows=1 width=54) (actual time=0.013..0.013 rows=0 loops=14)
Output: s3_3.sdate, s3_3.stime, s3_3.lorry, s3_3.zc5x3, s3_3.country, s3_3.emadr1, s3_3.emadr2, s3_3.parcelno
Index Cond: (((s3_3.parcelno)::text = (d.parcelno)::text) AND (s3_3.parcelno IS NOT NULL))
-> Index Scan using scandata03_2016_pl_indx on scans.scandata03_2016 s3_4 (cost=0.43..8.31 rows=1 width=55) (actual time=0.019..0.020 rows=2 loops=14)
Output: s3_4.sdate, s3_4.stime, s3_4.lorry, s3_4.zc5x3, s3_4.country, s3_4.emadr1, s3_4.emadr2, s3_4.parcelno
Index Cond: (((s3_4.parcelno)::text = (d.parcelno)::text) AND (s3_4.parcelno IS NOT NULL))
Planning time: 4.670 ms
Execution time: 701.550 ms
最佳答案
在我看来有很多不必要的嵌套。检查这在功能上是否等效
select distinct on (d.parcelno) d.*
from
dispatcher.detour_avis d
inner join
scans.scandata03 s3 on d.parcelno = s3.parcelno
left join
scans.scandata14 s14 on d.parcelno = s14.parcelno
where
d.ddate > now() - interval '5 day'
and d.parcelshop_id is not null and parcelshop_id != emadr2
and (
s14.parcelno is null or
(s14.sdate + s14.stime)::timestamp < (s3.sdate + s3.stime)::timestamp
)
order by d.parcelno
当您执行 left join
并放入 where
子句时,s3.parcelno is not null
条件包含右表column join condition 你真的在做一个inner join
。所以我只是将它从 where
子句中删除,并将 left
变成了 inner join
关于PostgreSQL 查询性能和可能的优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40506046/
比较代码: const char x = 'a'; std::cout > (0C310B0h) 00C3100B add esp,4 和 const i
您好,我正在使用 Matlab 优化求解器,但程序有问题。我收到此消息 fmincon 已停止,因为目标函数值小于目标函数限制的默认值,并且约束满足在约束容差的默认值范围内。我也收到以下消息。警告:矩
处理Visual Studio optimizations的问题为我节省了大量启动和使用它的时间 当我必须进行 J2EE 开发时,我很难回到 Eclipse。因此,我还想知道人们是否有任何提示或技巧可
情况如下:在我的 Excel 工作表中,有一列包含 1-name 形式的条目。考虑到数字也可以是两位数,我想删除这些数字。这本身不是问题,我让它工作了,只是性能太糟糕了。现在我的程序每个单元格输入大约
这样做有什么区别吗: $(".topHorzNavLink").click(function() { var theHoverContainer = $("#hoverContainer");
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: What is the cost of '$(this)'? 我经常在一些开发人员代码中看到$(this)引用同一个
我刚刚结束了一个大型开发项目。我们的时间紧迫,因此很多优化被“推迟”。既然我们已经达到了最后期限,我们将回去尝试优化事情。 我的问题是:优化 jQuery 网站时您要寻找的最重要的东西是什么。或者,我
所以我一直在用 JavaScript 编写游戏(不是网络游戏,而是使用 JavaScript 恰好是脚本语言的游戏引擎)。不幸的是,游戏引擎的 JavaScript 引擎是 SpiderMonkey
这是我在正在构建的页面中使用的 SQL 查询。它目前运行大约 8 秒并返回 12000 条记录,这是正确的,但我想知道您是否可以就如何使其更快提出可能的建议? SELECT DISTINCT Adve
如何优化这个? SELECT e.attr_id, e.sku, a.value FROM product_attr AS e, product_attr_text AS a WHERE e.attr
我正在使用这样的结构来测试是否按下了所需的键: def eventFilter(self, tableView, event): if event.type() == QtCore.QEven
我正在使用 JavaScript 从给定的球员列表中计算出羽毛球 double 比赛的所有组合。每个玩家都与其他人组队。 EG。如果我有以下球员a、b、c、d。它们的组合可以是: a & b V c
我似乎无法弄清楚如何让这个 JS 工作。 scroll function 起作用但不能隐藏。还有没有办法用更少的代码行来做到这一点?我希望 .down-arrow 在 50px 之后 fade out
我的问题是关于用于生产的高级优化级联样式表 (CSS) 文件。 多么最新和最完整(准备在实时元素中使用)的 css 优化器/最小化器,它们不仅提供删除空格和换行符,还提供高级功能,如删除过多的属性、合
我读过这个: 浏览器检索在 中请求的所有资源开始呈现 之前的 HTML 部分.如果您将请求放在 中section 而不是,那么页面呈现和下载资源可以并行发生。您应该从 移动尽可能多的资源请求。
我正在处理一些现有的 C++ 代码,这些代码看起来写得不好,而且调用频率很高。我想知道我是否应该花时间更改它,或者编译器是否已经在优化问题。 我正在使用 Visual Studio 2008。 这是一
我正在尝试使用 OpenGL 渲染 3 个四边形(1 个背景图,2 个 Sprite )。我有以下代码: void GLRenderer::onDrawObjects(long p_dt) {
我确实有以下声明: isEnabled = false; if(foo(arg) && isEnabled) { .... } public boolean foo(arg) { some re
(一)深入浅出理解索引结构 实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(no
一、写在前面 css的优化方案,之前没有提及,所以接下来进行总结一下。 二、具体优化方案 2.1、加载性能 1、css压缩:将写好的css进行打包,可以减少很多的体积。 2、css单一样式:在需要下边
我是一名优秀的程序员,十分优秀!