我有一个关于索引的“最佳实践”问题。
我必须索引电话号码,我通常将列
格式化为整数。我可以将号码分成多列:区号、后缀、前缀、国家/地区代码。但由于我必须考虑国际数字,并且这些数字在某些国家/地区变得有点有趣,所以我更喜欢保留一栏。
所以我的问题是,我应该将列数据保存为整数、字符还是 varchar? 我确实删除了任何与 int 无关的内容,因此可能不需要 varchar 。
我必须为我的客户提供搜索能力,因此我需要对数字进行索引。 如果所有电话号码都来自美国,那么我会将各列分开,但我也在迎合国际电话号码。
所以我对索引部分以及其他人在这个领域的实践感到好奇。最好用整数索引(对于这样的事情),或者它甚至重要吗?
顺便说一句,电话号码的长度不会完全相同。这就是为什么我询问如何格式化 char 或 varchar 中的列结构。
谢谢大家!!
最佳答案
表格预计有多大?我问的原因是整数上的索引显然会更小,但在小表上这不是主要考虑因素。使用 varchar 可以让您更灵活地执行“...WHERE 电话号码(如 '415%'”等),但代价是索引较大。如果表相当大,并且它运行的框完全占用内存 -如果受到限制,您可能会遇到索引无法放入内存的情况,从而将针对该索引的查询发送到交换 hell 。您选择的存储引擎可能会加剧这种情况:InnoDB 在每个索引前加上主键,例如,如果您的 PK 涉及广泛的领域,这可能会使您的索引膨胀。
关于mysql索引问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6443438/