mysql - 这是最好的索引吗?

标签 mysql sql select indexing

我有一个像这样的表:

创建表 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/

相关文章:

mysql - 将 CSV 文件从 MySQL 导出到本地计算机 (OS X)

sql - 用GROUP BY之后的号码查询

mysql - 如何获得相同的行值

sql - SQL存储过程删除重复记录,保留一个

php - 如何对 3 个表进行选择?

由于执行 JOIN 查询而导致 Mysql 连接丢失

php - 如何删除通过 mysql_query 获得的特定行结果?

php - 我应该把这个脚本放在什么目录

javascript - 选择从 JavaScript 填充的控件返回空值

mysql - 从选择查询结果中插入数据并添加新列