ホームページ >データベース >mysql チュートリアル >MySQL で関数ベースのインデックスの効果を実現するにはどうすればよいですか?

MySQL で関数ベースのインデックスの効果を実現するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-21 11:20:121006ブラウズ

How Can I Achieve the Effect of Function-Based Indexes in MySQL?

MySQL の関数ベースのインデックス

Oracle とは異なり、MySQL は本質的に関数ベースのインデックスをサポートしません。ただし、考慮すべき代替案があります。

列の先頭部分

MySQL では、次の構文を使用して列の先頭部分にインデックスを付けることができます。

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

これは、「名前」の最初の 5 文字を使用してインデックスを作成します

トリガーと追加の列

より複雑な関数の場合は、インデックス付きデータを含む別の列を作成し、挿入/更新トリガーを使用してその列が正しく設定されるようにすることができます。 .

を考えてみましょう列の部分文字列にインデックスを付けるシナリオ。次のように新しい列を作成し、トリガーを使用できます。

ALTER TABLE cust_table ADD COLUMN substring VARCHAR(255);

CREATE TRIGGER update_substring
AFTER INSERT OR UPDATE ON cust_table
FOR EACH ROW
SET NEW.substring = SUBSTRING(NEW.id, 1, 8);

関数インデックスとの比較

このアプローチでは関数インデックスと同様の効果が得られますが、次の点が異なります。追加のデータ冗長性。ただし、より複雑な関数を定義したり、トリガーを通じてデータの一貫性を確保したりすることもできます。

以上がMySQL で関数ベースのインデックスの効果を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。