ホームページ >データベース >mysql チュートリアル >MySQL は関数ベースのインデックス作成をサポートしていますか?
MySQL での関数ベースのインデックス作成
Oracle データベースでは、部分文字列の抽出などの関数に基づいてデータのインデックスを作成できます。 SUBSTRING(id,1,8) を使用して列から取得します。この便利な機能により、MySQL が同様の機能を提供するかどうかという疑問が生じます。
MySQL のアプローチ
MySQL は、従来の意味での関数ベースのインデックス作成をサポートしていません。 MySQL の最新バージョン (5.6 を含む) にもこの機能はありません。ただし、MySQL 8.0.13 以降などの最近のリリースでは関数インデックスが導入されており、関数や式に基づいた柔軟なインデックス作成が可能です。
古い MySQL バージョンの代替
MySQL バージョン 8.0.13 より前の場合、関数の結果に基づくインデックス作成のオプションは限られています。 MySQL は、インデックス作成のためのカラム内の先頭文字の使用をサポートしていますが、より複雑な式や特定の文字位置から開始することはできません。
この制限を回避するには、インデックス可能なデータを含む別のカラムを作成できます。また、トリガーを使用して元の列との同期を維持します。これはデータベースの正規化原則に厳密に準拠しているわけではありませんが、トリガーを通じてデータの同期を保つことで同様の効果を実現します。
結論
一方、MySQL は直接的なサービスを提供しません。関数ベースのインデックス作成のサポートでは、MySQL 8.0.13 以降での関数インデックスの導入により、このニーズに対するソリューションが提供されます。古いバージョンの場合、トリガーを使用して別のインデックス付き列を使用すると、関数ベースのインデックスの機能をエミュレートできます。
以上がMySQL は関数ベースのインデックス作成をサポートしていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。