MySQL索引的使用

bjg7j2ky  于 2023-02-03  发布在  Mysql
关注(0)|答案(1)|浏览(118)

我有一个非常简单的五列表,

CREATE TABLE notification_tag (
    _id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    notification_id INT NOT NULL,
    tag_value CHAR(11) NOT NULL,
    recipient CHAR(11) NOT NULL,
    brand CHAR(11),

    INDEX tag_value (tag_value),
    INDEX notification_id_tag_value_recipient_brand (notification_id, tag_value, recipient, brand)
) CHARACTER SET ascii COLLATE ascii_bin;

Explain显示,当我运行下面的查询时,MySQL正在使用键tag_value
x一个一个一个一个x一个一个二个x
有什么理由不使用notification_id_tag_value_recipient_brand索引吗?

vhmi4jdf

vhmi4jdf1#

您的查询将不使用(notification_id, tag_value, recipient, brand)上的索引,因为该查询没有任何搜索词来搜索索引的最左列。
以电话簿为例,如果您按姓氏或姓氏和名字搜索某人,它会有所帮助。但是如果您只按名字搜索,则电话簿中条目的顺序就没有帮助了。
您可能还喜欢我的演示文稿How to Design Indexes, Reallyvideo

相关问题