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 サイトの他の関連記事を参照してください。