1

该查询通常从缓存查询中获取大约 40k 行。无论出于何种原因,QoQ 都很慢。我试图删除大部分逻辑(不同的,分组等)无济于事,这让我相信设置中有问题。有人知道发生了什么以及如何加快速度吗?

subcats (Datasource=, Time=42979ms, Records=14)

            SELECT 
                DISTINCT(SNGP.subtyp1) AS cat,
                MIN(SNGP.sortposition) AS sortposition,
                MIN(taxonomy.web_url) AS url
            FROM
                SNGP,
                taxonomy
            WHERE
                SNGP.typ > ''
                AND UPPER(SNGP.typ) <> 'EMPTY'
                 AND UPPER(SNGP.DEPT) = 'SHOES' AND UPPER(SNGP.TYP) = 'FASHION' AND SNGP.SUBTYP1 <> 'EMPTY'
            GROUP BY SNGP.subtyp1
            ORDER BY SNGP.sortposition ASC
4

1 回答 1

0
  1. 你必须做一个QoQ吗?可以修改您的原始查询以提供您需要的数据吗?您甚至可以按计划缓存您正在执行的所有可能的 QoQ 吗?

  2. 您正在从两个表(SNGP、分类)中进行选择,但我没有看到它们之间的连接

  3. web_url 听起来像一个字符串,你为什么要对它做一个 MIN() ?

  4. 在您的 WHERE 子句中,首先移动最严格的部分。例如,如果typ > ''将结果限制为 1000 行,但UPPER(SNGP.typ) <> 'EMPTY'将其限制为仅 100 行,那么您应该把它放在第一位。这是一般的 SQL 建议,不确定它与 QoQ 的效果如何。

  5. 40k 行然后只选择 14 个结果听起来像是数据不匹配;在您尝试 QoQ 之前,是否有任何其他方法可以让数据受到更多限制。

于 2013-07-03T15:57:07.243 回答