如果我有一个表列,每行有 0 或 1,
以下哪个是最佳选择:
SELECT SUM(myCol) as v FROM mytable
SELECT SUM(mycol) as v FROM mytable WHERE mycol=1
SELECT COUNT(mycol) as v FROM mytable WHERE mycol=1
更新:就在第五位好心人投票结束我的 Q 之前的一刻:
我还不知道基数,也不知道指数,它只是作为理论上的 Q 被问到。
实际上我希望也许其中一个陈述总是比其他陈述更好。
考虑例如第三和第二 - 我希望也许有人会说这个选项更好,因为(也许 - 这是推测而不是事实)在执行无论如何......或比较前两个选项COUNT
时已经计算了行WHERE
有人可能会说(再次 - 我的猜测)只要 mycol 上没有索引,那么第一个总是会更好,因为它需要更少的比较 - 或者第二种方式更好,因为它需要更少的添加操作(这是可能比比较贵)。
也许这个问题应该更多地按照“在什么条件下可以确定这些陈述之一优于其他两个(或两者)之一”的方式来说明。
对不起,如果我给人的印象是我懒得解释......