私は510,085行のテーブルを持っています。これは現在、より高いパフォーマンスを求めています。この表のフィールドの1つは「photoStatus」と呼ばれます。1つの列のSQLパフォーマンス
'photoStatus'では、510,045行に「アクティブ」という単語が含まれ、残りの40に「Suspended」という単語が含まれています。
「アクティブな」写真を検索するのが速いのはどちらですか?それとも重要ではありませんか?
WHERE photoStatus = 'Active'
Or
WHERE photoStatus <> 'Suspended'
明らかに、これは膨大なクエリの一部ですが、これは単なるWHERE条件ではありません。あなたはその列WHERE photoStatus = 'Active'
にインデックスを持っている場合は、サーバーだけでActive
に一致するインデックス内の範囲をスキャンすることができますので、
データベースは、MySQL(MyISAMテーブル)
どのデータベースを使用していますか? –
使用しているデータベースシステムが不明ですが、SQL Serverでは、SQL Serverがこれを判別できる唯一の方法は、「アクティブ」ステータスエントリが存在するためにテーブル(またはそのクラスタ化インデックス)データの大部分を占めています。インデックスは実際にはあまり役に立ちません....また、すべてを選択しているか(SELECT *)、またはカバリングインデックスで処理できるクエリがあるかどうか、つまりあなたが必要とする値があれば、おそらくSQL Serverは小さなインデックスでインデックススキャンを実行できます。 –
私はMyISAM – TheCarver