MySQL使用INT / BIGINT和索引查询性能

时间:2013-10-10 00:21:15

标签: mysql indexing int database-performance bigint

这是我的表格:

CREATE TABLE `ip2_org_translators` (
  `ip_start` bigint(12) unsigned DEFAULT NULL,
  `ip_end` bigint(12) unsigned DEFAULT NULL,
  `organization` varchar(255) DEFAULT NULL,
  KEY `ip_start` (`ip_start`,`ip_end`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

请注意ip_startip_end上的索引。以前,ip_startip_end列是int(10)FYI。

这是我的查询:

SELECT organization FROM `ip2_org_translators` WHERE (1823194021 >= ip_start AND 1823194021 <= ip_end)

如果我将数字降低10的幂(比如182319402),则此查询将在标称的6-8ms范围内运行。 如果然而更大的数字(10个或更多位置),查询需要大约700毫秒才能运行。解释此查询提供

id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE ip2_org_translators ALL ip_start NULL NULL NULL 1392767 Using where

请注意,它没有使用ip_start索引,而是进行全表扫描。

这是MySQL或我的索引/查询中的错误吗?

0 个答案:

没有答案