1

一部の行では、カバリング インデックスが LO​​NGTEXT またはその他の LOB 列からのクエリを満たすのに役立つのでしょうか? (MySQL 8、MariaDB 10.5)

私はこのテーブルを持っています(WordPressで定義):

CREATE TABLE wp_options (
    option_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
    option_name VARCHAR(191) NOT NULL DEFAULT '' COLLATE 'utf8mb4_unicode_ci',
    option_value LONGTEXT NOT NULL COLLATE 'utf8mb4_unicode_ci',
    autoload VARCHAR(20) NOT NULL DEFAULT 'yes' COLLATE 'utf8mb4_unicode_ci',
    PRIMARY KEY (option_id) USING BTREE,
    UNIQUE INDEX option_name (option_name) USING BTREE,
    INDEX autoload (autoload) USING BTREE
) ENGINE=InnoDB;

そして、次のクエリを実行する必要があります。

SELECT option_name, option_value FROM wp_options WHERE autoload='yes';

数百行を返します (多くの忙しい WordPress インストールでは)。これらの行のほとんどはかなり短い option_name、option_value 文字列ですが、長い文字列を持つ行もいくつかあります。WordPress はこのクエリを (すべてのページ ビューで) 頻繁に使用します。autoloadインデックスを使用してWHERE条件を満たします。

私の質問:次のようなプレフィックスを含むカバリング インデックスを定義すると:

 wp_options(autoload, option_name(40), option_value(131))

インデックス スキャンは、短い名前と値のクエリを直接満たすことができますか? または、MySQL はメイン テーブルの everyoption_nameと LONGTEXT オブジェクトを、option_value短いかどうかに関係なく調べますか?

4

1 に答える 1