我不是sqlMaven,我正在尝试优化我正在进行的查询。假设以下情况:我想提取clientid列表中所有未付的账单。我当前的查询有点像这样:
SELECT CLIENT_ID, BILL_ID, BILL_PAID
FROM T_BILLS
WHERE CLIENT_ID IN [LIST OF IDs]
AND BILL_PAID = 'No'
我的第一个想法是,第二个条件(bill\u paid='no')是减少返回的行数,从而加快查询速度。我的公司服务器有运行sql查询的时间限制。现在我要毁了它。我知道我可以将我的id列表分割成更小的列表,但在这样做之前,我想知道删除第二个where子句是否有帮助。逻辑是我会得到更多的数据,但这可能需要更少的计算。多余的数据可以很容易地用excel过滤掉。
1条答案
按热度按时间u5rb5r591#
如注解中所述,如果没有索引
CLIENT_ID
以及BILL_PAID
然后加上它们。也要考虑改变BILL_PAID
键入from string to int或tiny int(model enum或boolean类型,如果适用),进一步破坏该列上的索引。