Joh*_*ais 5 sql analysis query-optimization
我目前正在维护大量的SQL查询.其中一些是通过复制/粘贴操作创建的,然后删除不必要的字段,有时忘记删除这些字段来自的表.
我正在寻找一个工具(或除了眼睛+大脑之外的任何东西),在给定SQL查询的情况下,它将分析哪些连接表在SELECT部分中没有选择字段.
你知道这样的工具吗?
谢谢
仅仅因为SELECT中没有引用任何字段,这并不意味着连接对查询逻辑不重要,并且如果删除连接,结果可能会更改.
请考虑以下简单示例:返回2011年购买商品的所有客户的名称.
SELECT DISTINCT c.CustomerName
FROM Customer c
INNER JOIN Sales s
ON c.CustomerID = s.CustomerID
AND s.SalesDate >= '2011-01-01'
Run Code Online (Sandbox Code Playgroud)
在SELECT中没有返回Sales表中的列,但是连接对于返回正确的结果集至关重要.
一句话:我认为您需要进行人眼/大脑代码检查才能正确清理.
假设一个工具可以存在,但只有在满足所述连接的所有以下标准时才能保证它是正确的
可能为什么在SQL解析器中没有确定性警告的方式让我们说C#中一个未使用的变量.但是,创建一个查找其中一些条件的SQL检查器并让用户知道这里有可能进行优化可能是值得的.