SQL Server 性能优化

日期 2023-04-20 分组 数据库 标签 SQLServer标签 面试 3分钟 · 524字

优化总结

优化细节

避免在 SELECT 子句使用子查询

1
SELECT
2
CustomerID,
3
(SELECT SUM(TotalAmount) FROM Orders WHERE CustomerID = 1001) AS TotalSpent
4
FROM Customers
5
WHERE CustomerID = 1001;

尽量减少 JOIN 操作

例子:使用 EXISTS 子查询代替 JOIN

我们想要查询所有下过订单的用户。通常,我们会使用 JOIN 操作:

1
SELECT u.* FROM users u
2
JOIN orders o ON u.id = o.user_id;
3
4
-- 但我们可以使用EXISTS子查询来达到同样的目的:
5
6
SELECT u.* FROM users u
7
WHERE EXISTS (SELECT 1 FROM orders o WHERE u.id = o.user_id);

小表驱动大表

例子:我们拥有客户表和订单表,订单表数据量大,我们使用客户表来作为主表,对订单表进行关联查询

1
SELECT o.order_id, o.order_amount, c.customer_name
2
FROM customers c
3
JOIN orders o ON c.customer_id = o.customer_id;

数据分区分表

上一篇: Entity Framework 基础知识
下一篇: 面试问题:遇到过什么技术难点