T-SQL 多表查询与集合运算全解析
1. 多表查询中的连接算法提示
在多表查询时,我们可以通过提示来影响优化器对连接算法的选择。例如,若要阻止优化器选择合并算法,同时让它在嵌套循环和哈希算法中灵活选择,可使用如下代码:
SELECT C.custid, C.custname, O.orderid, O.empid, O.shipperid, O.orderdate
FROM dbo.Customers AS C
INNER JOIN dbo.Orders AS O
ON O.custid = C.custid
OPTION(LOOP JOIN, HASH JOIN);
不过要注意,使用这种方法会影响查询中的所有连接。而且目前没有能为单个连接指定多种算法的提示。另外,与连接提示不同,连接算法的查询提示不会影响连接顺序。若要强制连接顺序,需添加 FORCE ORDER 查询提示。
性能提示虽能用于性能故障排查,但在生产查询中使用会使优化失去动态性。若在生产代码中使用这些提示解决紧急问题,应将其视为临时方案,后续有时间再深入研究问题,找到让优化器自然做出更优选择的方法。
2. 元素分离问题
元素分离是 T-SQL 中的经典挑战。假设有一个名为 Arrays 的表,其 arr 列存储着逗号分隔的字符串值。以下是创建该表并填充示例数据的代码:
SET NOCOUNT ON;
U
超级会员免费看
订阅专栏 解锁全文
2861

被折叠的 条评论
为什么被折叠?



