
No.2ベストアンサー
- 回答日時:
・where句をつけると、当然、where内の条件を解決しないといけませんので、統計情報のみで答えを返すことが出来ません。
基本的には、テーブルを見に行くことになります。ただし、where sure_id=5において、該当のテーブルのsure_id列にインデックスがついていれば、インデックススキャンのみで終わる可能性が高いです。・count(*)とcount(name)の間で、早い遅いはありません。が、この二つ、nullの扱いにおいて関数の意味が違うので注意してください。普通は、この意味で使い分けをします。
count関数は、基本的に、nullを数えません。
count(*)だと、全列nullの行のみが数えない対象となります。
しかし、count(name)とすると、name列がnullのデータは数えてもらえなくなります。
name列にnullが入らなければ、count(*)とcount(name)は等価ですが、nullが許されると意味が違うというです。
この回答へのお礼
お礼日時:2014/02/08 22:50
回答ありがとうございます
インデックスを付けると速くなる理由が少し理解できました
count(*)とcount(カラム名)は全然違うのですね。気をつけます
No.1
- 回答日時:
データベースによって違いがあるとは思いますが、
1)WHEREをつけると中身を見に行きますか?
SELECT COUNT(*) AS cnt FROM bbs WHERE sure_id=5
見に行きます。見に行きたくなければインデックスにsure_idを入れれば見に行きません。
2)中身を見に行く場合、カラムを指定したほうが早いでしょうか?
SELECT COUNT(id) AS cnt FROM bbs WHERE sure_id=5
変わらないと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エラー 1068 (42000): 複数の主...
-
PL/SQLの変数について
-
SQL Left Join で重複を排除す...
-
VIEWの元のテーブルのindexって...
-
クエリ表示と、ADOで抽出したレ...
-
SQLサーバから、項目の属性(型...
-
テーブル名を省略して「h.id」...
-
idとするものをvarcharかintか...
-
Yes/No型にチェックを入れたい
-
sqlで、600行あるテーブルを100...
-
Postgreのupdateコマンドでエラー
-
Updateの複数テーブル条件時のL...
-
別のDB(Table)からの複数行の...
-
URL と行番号の指定
-
”photo id” とは何ぞや?
-
入力値と外部キーをINSERTするには
-
MYSQLでSQLSERVERのリンクサー...
-
【Transact-sql】 execの結果を...
-
T-SQLの sp_executesql について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
Unionした最後にGROUP BYを追加...
-
SQL Left Join で重複を排除す...
-
別のDB(Table)からの複数行の...
-
エラー 1068 (42000): 複数の主...
-
DB設計について
-
VIEWの元のテーブルのindexって...
-
同じサーバーで、異なるデータ...
-
SQLサーバから、項目の属性(型...
-
クエリ表示と、ADOで抽出したレ...
-
SQLにて特定の文字を除いた検索...
-
select文のwhere句に配列を入れ...
-
【SQL文】Insert into文で文法...
-
カラム名でseqとidではどちらが...
-
マイクラPC版のコマンドで効率...
-
Access パラメータクエリをcsv...
-
[MySQL] 1対多のリレーションで...
-
PL/SQLの変数について
-
MySQLにてCOUNTした値を更にCOUNT
おすすめ情報