0

各行に 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

更新: 5 番目の親切な人が私の Q を閉じるために投票する直前に:

カーディナリティもインデックスも、理論的なQとして尋ねられたものではありません。
実際、ステートメントの1つが常に他のステートメントよりも優れていることを望んでいました。
たとえば 3 番目と 2 番目を考えてみましょCOUNTう - (おそらく - これは事実ではなく憶測です)WHEREとにかく実行するときに行が既にカウントされているため、誰かが来て、オプションの方が優れていると言うと思いました... または最初の 2 つのオプションを比較しますmycol にインデックスがない限り、必要な比較が少ないため、最初の方が常に優れていると誰かが言うかもしれません-または、追加アクションが少なくて済むため、2番目の方が優れています(これはおそらく比較よりも高価です)。

おそらく、質問は、「どのような条件下で、これらのステートメントの1つが他の2つのうちの1つ(または両方)よりも優れていると確信できるか」という行に沿ってもっと述べられるべきでした。

EXPLAINをするのが面倒だという印象を誰かに与えてしまったらごめんなさい...

4

2 に答える 2

0

それはあなたの要件に依存します。ただし、1つの値の列数を合計したい場合は、

SELECT COUNT(mycol) as v FROM mytable WHERE mycol=1

于 2013-06-04T08:49:08.680 に答える