mysql索引问题

标签 mysql indexing

我有一个关于索引的“最佳实践”问题。

我必须索引电话号码,我通常将格式化为整数。我可以将号码分成多列:区号、后缀、前缀、国家/地区代码。但由于我必须考虑国际数字,并且这些数字在某些国家/地区变得有点有趣,所以我更喜欢保留一栏。

所以我的问题是,我应该将列数据保存为整数、字符还是 varchar? 我确实删除了任何与 int 无关的内容,因此可能不需要 varchar 。

我必须为我的客户提供搜索能力,因此我需要对数字进行索引。 如果所有电话号码都来自美国,那么我会将各列分开,但我也在迎合国际电话号码。

所以我对索引部分以及其他人在这个领域的实践感到好奇。最好用整数索引(对于这样的事情),或者它甚至重要吗?

顺便说一句,电话号码的长度不会完全相同。这就是为什么我询问如何格式化 char 或 varchar 中的列结构。

谢谢大家!!

最佳答案

表格预计有多大?我问的原因是整数上的索引显然会更小,但在小表上这不是主要考虑因素。使用 varchar 可以让您更灵活地执行“...WHERE 电话号码(如 '415%'”等),但代价是索引较大。如果表相当大,并且它运行的框完全占用内存 -如果受到限制,您可能会遇到索引无法放入内存的情况,从而将针对该索引的查询发送到交换 hell 。您选择的存储引擎可能会加剧这种情况:InnoDB 在每个索引前加上主键,例如,如果您的 PK 涉及广泛的领域,这可能会使您的索引膨胀。

关于mysql索引问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6443438/

相关文章:

sql - 如何根据时间戳的年份和月份创建索引?

php - 使用 PHP 检查并删除多维数组中的数组值

php - 使用 PHP 将所有复选框值提交到 MySQL

Java:在每个数组值前面输入一个数字

performance - 使用 INDEX 将光标滚动到第一个搜索结果

python - 如何使用字典中的键获取索引?

Mysql实现及多字段查询效率

MySQL 从 md5 密码中删除字符

php - 已连接页面PHP的mysqli_query连接

mysql - 实体图中的属性和关系中的属性有什么区别。