我有一个像这样的表:
创建表 ph_numbers
(
service_area_code
int(2) 默认为 NULL,
数字
varchar(20) 默认为空,
phone_type
int(1) 默认为 NULL,
date_created
日期时间默认为 NULL,
KEY idx_number
(数字
(4))
) ENGINE=InnoDB 默认字符集=latin1
我想根据数字列查询这个表。该号码是 10 位数字的电话号码,其中前 4 位可用作运营商标识符。该表包含大约 2 亿行。
我可以做些什么来改进查询?
最佳答案
为了改进查询,您可以将 number
设为表的主键。在 InnoDB 中,主键查找比辅助索引查找便宜。
但这意味着您不能对数字
使用前缀索引。
我想知道为什么您使用 VARCHAR(20) 来表示 10 位数字。 VARCHAR(10) 不是更适合吗?
关于mysql - 这是最好的索引吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22653250/