这是最好的指数吗?

时间:2014-03-26 06:34:58

标签: mysql sql select indexing

我有一张表:

CREATE TABLE ph_numbers(   service_area_code int(2)DEFAULT NULL,   number varchar(20)DEFAULT NULL,   phone_type int(1)DEFAULT NULL,   date_created datetime DEFAULT NULL,   KEY idx_numbernumber(4)) )ENGINE = InnoDB DEFAULT CHARSET = latin1

我想根据数字列查询此表。该号码是一个10位数的电话号码,这些数字中的前4个可以用作opertor标识符。该表包含大约2亿行。

我可以做些什么来改善查询?

1 个答案:

答案 0 :(得分:0)

改善查询的方法是将number作为表的主键。在InnoDB中,主键查找比二级索引查找便宜。

但这意味着您无法使用number的前缀索引。

我想知道你为什么要使用VARCHAR(20)来获得10位数字。那个VARCHAR(10)更贴合吗?