2015-10-15 56 views
0

这是一个非常基本的问题,但我很困惑我正在读不同的地方。我有一个简单的表不包含庞大的数据(小于500行对于任何给定分贝是典型的)对这个表一个典型的查询看起来像量:我应该使用多个单列索引还是单个多列索引?

select system_fields.name from system_fields where system_fields.form_id=? and system_fields.field_id=? 

我的问题是,我应该有一个单独的索引form_id和一个field_id,或者我应该创建这两个字段的组合索引?我以前从来没有真正做过多列索引。

CREATE TABLE IF NOT EXISTS `system_fields` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `field_id` int(11) NOT NULL, 
    `form_id` int(11) NOT NULL, 
    `name` varchar(50) NOT NULL, 
    `reference_field_id` varchar(1000) DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    KEY `field_id` (`field_id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=293 ; 

回答

1

如果您总是要通过这两个字段查询,然后添加一个多列索引。

我还会指出,如果您要在表格中有< 500行,您的索引可能甚至无法使用。在500行表格上有或没有索引的性能差异可以忽略不计。

这里有一个多一点(好)阅读: https://www.percona.com/blog/2014/01/03/multiple-column-index-vs-multiple-indexes-with-mysql-56/

+0

这种联系主要是无关紧要,因为其中一列正在测试针对“范围”。 –