1. ホーム
  2. mysql

[解決済み] booleanフィールドのインデックスを作成すると、パフォーマンスが向上するのでしょうか?

2022-07-28 19:55:12

質問

私はちょうどクエリを書こうとしているのですが、そのクエリには WHERE isok=1 . その名の通り isok はブーリアン・フィールドです (実際には TINYINT(1) UNSIGNED で、必要に応じて 0 または 1 に設定されます)。

このフィールドにインデックスを付けることでパフォーマンス向上があるのでしょうか?エンジン (この場合は InnoDB) はインデックスを検索することで、パフォーマンスが向上するでしょうか、それとも低下するでしょうか?

どのように解決するのですか?

そうでもないですよ。本のように考えてみてください。本の中に3種類の言葉しかなかったとして、そのすべてに索引をつけると、通常のページと同じ数の索引ページができることになります。

1つの値のレコードが比較的少なければ、性能向上が期待できます。例えば、1000件のレコードがあり、そのうち10件がTRUEなら isok = 1

Michael Durrantが言ったように、書き込みが遅くなることもあります。

EDIT: 重複の可能性あり。 ブーリアンフィールドのインデックス作成

ここでは、インデックスがあっても、レコード数が多ければ、どうせインデックスは使われないと説明しています。 MySQLはチェック=1ではインデックスを使用せず、チェック=0では使用する。