首页 > 解决方案 > WHERE 子句对性能的影响

问题描述

我不是 SQL 专家,我正在尝试优化我正在做的查询。假设以下情况:我想提取所有未付账单的客户 ID 列表。我当前的查询看起来有点像这样:

SELECT CLIENT_ID, BILL_ID, BILL_PAID  
FROM T_BILLS 
WHERE CLIENT_ID IN [LIST OF IDs] 
  AND BILL_PAID = 'No' 

我的第一个想法是第二个 where 条件(BILL_PAID = 'No')是减少返回的行数,从而使查询更快。我的公司服务器有运行 SQL 查询的时间限制。现在我正在破坏它。我知道我可以将我的 ID 列表分割成更小的列表,但在这样做之前,我想知道消除第二个 where 子句是否有帮助。逻辑是我会获得更多数据,但这可能需要更少的计算。额外的数据可以在以后使用 excel 轻松过滤掉。

标签: sql

解决方案


如评论中所述,如果您没有索引CLIENT_IDBILL_PAID然后添加它们。还要考虑将BILL_PAID类型从字符串更改为 int 或 tiny int(模型枚举或布尔类型,如果适用)以进一步破坏该列上的索引。


推荐阅读