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

MySQLで関数ベースのインデックスを作成することは可能ですか?

    いいえ、一般的な意味ではありませんが、5.6(この回答が最初に書かれたときの最新バージョン)でさえこの機能を備えているとは思いません。 8.0.13以降では、機能インデックス 、以下で説明するトリガー方法なしで必要なことを達成できます。

    古いバージョンのmysqlを実行している場合 、それは リーディングのみを使用できます 列の一部(この機能は長い間使用されてきました)が、2番目以降の文字で始まるもの、またはその他のより複雑な関数ではありません。

    たとえば、次の例では、名前の最初の5文字を​​使用してインデックスを作成します。

    create index name_first_five on cust_table (name(5));
    

    より複雑な表現の場合は、別のを使用することで、同様の効果を得ることができます。 インデックス可能なデータを含む列に挿入/更新トリガーを使用して、データが正しく入力されていることを確認します。

    冗長データのための無駄なスペースを除けば、それはほとんど同じことです。

    また、技術的には3NFに違反しますが、トリガーを使用してデータの同期を維持することで軽減されます(これは、パフォーマンスを向上させるためによく行われることです)。



    1. SQL Serverエージェント(T-SQL)でスケジュールのリストを取得する4つの方法

    2. 新しいPostgreSQLJSONデータ型内のフィールドを使用してクエリを実行するにはどうすればよいですか?

    3. MariaDB CURRENT_TIME()の説明

    4. MSAccessユーザーのための10の時間節約のヒント