【发布时间】:2015-05-31 22:46:25
【问题描述】:
我有一张表,里面有几百万条记录,按 SessionGUID(访问者)存储产品视图,表结构是:
ID (PK) SessionGUID(唯一标识符) 产品 ID(整数) 日期时间(日期时间)
查询的目的是返回查看特定产品 ID 的同一个人查看的产品 ID 列表(即,查看 X 的客户也查看了 Y)
我使用的查询如下:
SELECT
A.ProductID
FROM
VISITOR_SESSIONS_PRODUCTVIEWS A
WHERE
A.SessionGUID IN (SELECT DISTINCT SessionGUID FROM VISITOR_SESSIONS_PRODUCTVIEWS WHERE ProductID = @ProductID)
GROUP BY
A.ProductID
ORDER BY
COUNT(A.ProductID) DESC
是否有更有效的方法来使用 GROUP BY/HAVING/PARTITON 或其他更优化的方法来以我需要的方式获取数据?
我在我的开发服务器上运行 SQL 2008,但当它上线时将从 SQL Azure 运行。
【问题讨论】:
-
我原来有它,但把它拿出来看看它是否提高了性能。它似乎没有任何影响(因为这是存储过程的一部分,我可以在将数据返回到应用程序的实际选择中过滤掉它)
-
如果您也可以提供一些示例数据和示例输出,将会有所帮助
标签: sql sql-server tsql azure-sql-database