ホームページ > データベース > mysql チュートリアル > MySQL は Oracle のような関数インデックスをサポートしていますか? 代替手段は何ですか?

MySQL は Oracle のような関数インデックスをサポートしていますか? 代替手段は何ですか?

Patricia Arquette
リリース: 2024-12-12 21:34:09
オリジナル
948 人が閲覧しました

Does MySQL Support Functional Indexes Like Oracle, and What Are the Alternatives?

MySQL の関数インデックス

Oracle などのデータベース管理システムでは、関数インデックスを使用すると、列に適用される特定の関数に基づいてインデックスを作成できます。 、複雑なクエリに対する効率的な検索機能を提供します。たとえば、Oracle は、SUBSTRING(id,1,8) のような関数に基づくインデックス作成をサポートしています。

ただし、MySQL は、一般的な意味での関数ベースのインデックスを本質的にサポートしません。最新バージョン (この説明の時点では 5.6 まで) でも、MySQL にはこの機能がありません。

MySQL の代替手段

MySQL は機能を直接サポートしていませんが、 -ベースのインデックスの場合、同様の結果を達成する別のアプローチがあります:

先頭列プレフィックスインデックス作成:

MySQL では、カラムの先頭部分にインデックスを作成できますが、カラム内の任意のオフセットにはインデックスを作成できません。たとえば、次のように名前の最初の 5 文字を使用してインデックスを作成できます:

create index name_first_five on cust_table (name(5));
ログイン後にコピー

トリガー付きの派生列:

より複雑な式の場合は、必要なインデックス付きデータを含む別の列を作成できます。その後、挿入/更新トリガーを使用してこの列にデータを入力し、データの一貫性を維持できます。これは基本的に、必要なインデックス付きデータの事前計算済みバージョンを提供することで関数インデックスをエミュレートします。

このアプローチでは、データ ストレージに関してある程度の冗長性が導入されますが、同様のパフォーマンス上の利点が得られます。また、トリガーによるデータ同期を確保することで、第 3 正規形 (3NF) の違反の可能性も軽減します。

以上がMySQL は Oracle のような関数インデックスをサポートしていますか? 代替手段は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート