运行 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 更好。
所以我对 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 更好。