我正在创建一个超过13亿行的数据库表。
结构:ID,info1,info2,info3,city
在13亿行中,有很多相同的城市 我想知道,什么会更快(当用PDO PHP查找信息时)
什么更快,为什么?
谢谢!
答案 0 :(得分:4)
你有正确的想法。不要多次重复同一个城市。它会减慢您的查询速度,部分原因是城市名称在内存中占用的空间比整数多得多。较大的表需要更多的时间来处理,并且有近十亿行,它应该会产生显着的差异。请参阅this posting。
重复使用相同的名称数千次也会使您更有可能引入使您的查询结果不可靠的变体(拼写错误)。最后,这种设计将使更改城市名称变得更加困难。
用每个城市的唯一city_id
替换普通城市。在另一个city
表中,您将拥有相同的city_id
和一个包含完整城市名称的普通name
。
要从变化中获利,您必须让MySQL了解这种关系。创建表时,请务必将city_id
作为city表的主键,并在大表中使city_id
成为外键。
如果您想要开始跟踪城市的更多信息,此更改还可让您更轻松地扩展数据库。要了解更多信息,请查看数据库规范化。