我有一张表:
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_number
(number
(4))
)ENGINE = InnoDB DEFAULT CHARSET = latin1
我想根据数字列查询此表。该号码是一个10位数的电话号码,这些数字中的前4个可以用作opertor标识符。该表包含大约2亿行。
我可以做些什么来改善查询?
答案 0 :(得分:0)
改善查询的方法是将number
作为表的主键。在InnoDB中,主键查找比二级索引查找便宜。
但这意味着您无法使用number
的前缀索引。
我想知道你为什么要使用VARCHAR(20)来获得10位数字。那个VARCHAR(10)更贴合吗?