因为我使用的数据结构超出了我的控制范围,所以我的数据库中有一个表可能有数百万Foreign-key => (key => value)
对。现在,我知道其中一个键将是某个值(在这种情况下,键是related_content
)。 MySQL是否可以优化查询,以便不必在整个表中搜索结果?
示例表(称为meta
):
fk | key | value
====================================
1 | 'related_content' | '[2,3,4]'
1 | 'condiment' | 'mayo'
1 | 'condiment' | 'bananas'
29 | 'condiment' | 'ketchup'
29 | 'related_content' | '[1,7,9]'
95 | 'condiment' | 'mustard'
95 | 'related_content' | '[5,6,8]'
示例查询:
SELECT value FROM meta WHERE fk = 29 AND key = 'related_content';
我想做的是:
ALTER TABLE `meta` ADD INDEX `meta_related` ON (`key`) WHERE `key` = 'related_content';
(在有人要求之前,key
列已经有一个索引)
答案 0 :(得分:1)
添加'复合材料'索引
INDEX(fk, key)
答案 1 :(得分:0)
如果你要添加key_index(int11)列,它将代表一个关键列中的字符串,如:related_content = 1,condiment = 2,你将在key_index列上添加索引,int上的索引将比on更快字符串,最后您将选择使用两个索引整数字段。它会很快