文章
· 10 hr 前 阅读大约需 4 分钟
IRIS/Caché SQL优化经验分享 - 案例分享

国内的三甲医院, 最近因为过一个评测,对IRIS系统上的HIS有了SQL查询上的要求。 客户和实施工程师整理了一个慢查询的SQL列表, 很多查询慢的非常过分, 查询时间在甚至大于30分钟。

重要工作是实施工程师做的, 我帮着出出主意,对整个库的SQL查询做了优化。 下表是客户记录的我们在进行了大部分优化工作后的结果,您可以看到大多查询从几十分钟减少到了几十秒。其中有几个慢到几分钟的查询,最后经过细调, 也把查询耗时减少到了一分钟以内。 可惜最后没人更新这个表了, 但不重要,总之客户对于优化的结果基本是满意的, 我们自己也觉得很过的去,达到了一个查询SQL的使用者能接受的地步。

同事和老板认为我有必要在这里分享一下操作的要点,以便给其他有同样问题的客户一个思路。

其实如果您看过我前面的帖子,应该已经有了基本的概念。我就把工作流程总结一下,其实就这么几个步骤:

步骤一:

0 0
0 38
文章
· 五月 15 阅读大约需 4 分钟
IRIS/Caché SQL优化经验分享 - 优化关键字

SQL查询优化器一般情况下能给出最好的查询计划,但不是所有情况都这样,所以InterSystems SQL还提供了一个方式, 也就是在查询语句里加入optimize-option keyword(优化关键字), 用来人工的修改查询计划。

比如下面的查询:

SELECT AVG(SaleAmt) FROM %PARALLEL User.AllSales GROUP BY Region

其中的%PARALLEL, 就是最常用的优化关键字, 它强制SQL优化器使用多进程并行处理这个SQL。

您可以这样理解: 如果查询优化器足够聪明,那么绝大多数情况下,根本就不需要优化关键字来人工干预。因此,您也一定不奇怪在不同的IRIS/Caché版本中, 关键字的表现可能不一样。越新的版本,应该是越少用到。比如上面的%PARALLEL, 在Caché的大多数版本中, 在查询中加上它一般都能提高查询速度,而在IRIS中,尤其是2023版本以后, 同样的SQL查询语句,很大的可能查询优化器已经自动使用多进程并行查询了,不再需要用户人工干预了。

因此,先总结有关优化关键字的要点:

0 0
0 14