sql >> データベース >  >> RDS >> Mysql

Laravelのsoft_deleteにはMySQLのインデックスが必要ですか?

    deleted_at 良いインデックス候補ではありません。コメントと比較して、より適切に説明しようと思います。インデックスは、カーディナリティが比較的高い場合にのみ役立ちます。カーディナリティは、データセット内のインデックスの一意性を表す数値です。つまり、レコードの総数を一意のレコードの総数で割ったものです。

    たとえば、主キーのカーディナリティは1です。すべてのレコードには、主キーの一意の値が含まれています。 1も最大数です。 「100%」と見なすことができます。

    ただし、deleted_atなどの列にはそのような値はありません。 Laravelがdeleted_atで行うことは、それがnullであるかどうかをチェックすることです。つまり、2つの可能な値があります。 2つの値を含む列のカーディナリティは非常に低く、レコード数が増えると減少します。

    このような列にインデックスを付けることはできますが、役に立ちません。何が起こるかというと、物事が遅くなり、スペースを占有する可能性があります。

    TL; DR:いいえ、その列にインデックスを付ける必要はありません。インデックスはパフォーマンスに有益な影響を与えません。



    1. PHP Mysql PDO:一般的なエラー:2006MySQLサーバーがなくなりました

    2. SQLite左結合

    3. どちらが速いですか:複数の単一のINSERTまたは1つの複数行のINSERT?

    4. ストアドプロシージャのパラメータとしてリストを渡すにはどうすればよいですか?