2017-10-04 14 views
0

索引では、列挙型のデータ型には索引を使用することは推奨されていないことを示しています。しかし、それはなぜ私に言わなかった。 ENUMのインデックスを使うべきですか?本書では、WHERE節で使用する列を索引付けする必要があることも示しています。私はいつもどこでENUMを使っているのですか?それは本の説明に従って索引付けされるべきです。また、列挙型のデータ型を索引付けしないとも言います。今私は何をすべきですか?ENUMデータ型の索引

編集:私が求めている間、私はミスを犯した

だと思う、私はもう一度同じ本を読んで、私は読みながら、私は誤解だと思いますが、この本は、明示的に、我々はENUMのインデックスを使用してはならないと述べていませんでしたそれは、yes/no、0/1などの値の範囲が非常に限られている列に対してはインデックスを使用すべきではないと言いました。そして、私が本から得たことは、そのような列がENUM型であることです。

enum
+0

ENUMSもNULL値を持つことができるため、インデックスを付けないでください。https://dev.mysql.com/doc/refman/5.7/en/enum.html –

+0

私のENUMタイプを使用するシステム。言ってるだけ'。 – Strawberry

+0

@Strawberry ..データベースに列挙型を持っているかどうかは個人的な好みですが、フォームフィールドを変更したり、データベースに存在しないと思われる値を入力するユーザーに対して、データベースレベルのセキュリティを提供します。誰かにデータベースにfemを入力させて、あなたのデータを選択する際に問題が発生する可能性があります。 –

答えて

0

データタイプ(リスト内のリスト項目の値の位置)単にstored as a numberある:入力値が自動的に数値としてエンコードされるように指定する

ストリング。

このように、enumフィールドは、他の数値フィールドと同様にインデックスできます。

+0

はい、私は本を読んでいる間に誤解を持っていたが、その本は、はい/いいえ、0/1などの非常に限られた値の範囲を持つ列を索引付けしないように私に言った理由は – user15

+0

それは別の話です。そのような限定された様々な値を持つフィールドのインデックスは選択性が限られているため、オプティマイザはそれらを無視する傾向があります。マルチカラムインデックスの一部として引き続き使用することができます。 – Shadow