运行 SELECT 的优势 SELECT

Advantage to running SELECT DISTINCT to SELECT

所以我对 SQL 还很陌生,并且在我目前的实习期间被分配了 revamping/documenting 项目。

切入正题,我是 运行 table 上的以下查询:

SELECT COUNT(*) as NumofAccounts 
    FROM Accounts 
        WHERE Deleted = 0 
        AND Account_ID In ( SELECT DISTINCT Account_ID FROM Tasks WHERE Deleted = 0 );

这会产生 NumofAccounts = 18 的结果。

但是原始查询是:

SELECT COUNT(*) as NumofAccounts 
        FROM Accounts 
            WHERE Deleted = 0 
            AND Account_ID In ( SELECT Account_ID FROM Tasks WHERE Deleted = 0 );

这两个查询都会产生 NumofAccounts = 18,但是,如果将查询的这一部分隔离开来:

SELECT Account_ID FROM Tasks WHERE Deleted = 0; 

共有 736 行结果,其中很多是重复的 Account_IDs。

但是如果添加 DISTINCT:

SELECT DISTINCT Account_ID FROM Tasks WHERE Deleted = 0; 

只有 18 行结果,与 NumofAccounts 一致。

有什么方法可以分析这两个查询之间的运行时间或效率差异吗?

抱歉啰嗦了post!

您可以使用 Exists,它可以做得更好..

SELECT COUNT(*) as NumofAccounts 
FROM Accounts a
WHERE Deleted = 0 
AND exists ( SELECT Account_ID FROM Tasks  t WHERE t.Deleted = 0 and t.account_id=a.account_id) ;

当你说效率时,你需要缩小到几个领域,比如

1.Execution时间有待改进
2.query消耗更多cpu
3.using 更多内存

如果你的效率与执行时间有关,上面的查询会更好..

你的两个查询可能会根据几个因素(如这些表上可用的索引、选择的执行计划)而工作不同

您可以启用查询执行计划并查看您的查询执行情况:

此外,您可以打开客户端统计并获取总执行时间:

因此,使用这些工具,您可以比较不同的查询,select 更好。