sql - 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 轻松过滤掉。
解决方案
如评论中所述,如果您没有索引CLIENT_ID
,BILL_PAID
然后添加它们。还要考虑将BILL_PAID
类型从字符串更改为 int 或 tiny int(模型枚举或布尔类型,如果适用)以进一步破坏该列上的索引。
推荐阅读
- javascript - Vue vee-validate 使用路由器链接按钮验证输入表单
- html - 为 fontawesome 图标添加白色背景
- java - 动态克隆android活动?
- php - Laravel 5.5 雄辩的一对多不能使用 get()
- android - 我想在 android 中加密或混淆我的资源(XML 布局文件、字符串等)
- windows-10 - OpenSSH:名为 46AaCfGgKkMNnqsTtVvXxYy 的选项
- android - 应用未运行时在 Android Oreo 中未收到通知
- javascript - 使用 Protractor 和 VSTS 管道 (JavaScript) 最大化 Chrome
- tsql - 查找用户定义的数据库角色具有哪些权限
- machine-learning - Keras 中的 initial_epoch 是什么意思?