如何针对常量值优化SELECT?

时间:2015-08-25 13:34:47

标签: mysql indexing where

因为我使用的数据结构超出了我的控制范围,所以我的数据库中有一个表可能有数百万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列已经有一个索引)

2 个答案:

答案 0 :(得分:1)

添加'复合材料'索引

 INDEX(fk, key)

答案 1 :(得分:0)

如果你要添加key_index(int11)列,它将代表一个关键列中的字符串,如:related_content = 1,condiment = 2,你将在key_index列上添加索引,int上的索引将比on更快字符串,最后您将选择使用两个索引整数字段。它会很快