我的项目的一部分涉及在我的数据库中存储和检索大量 ips。我估计在项目启动后的几个月内我的数据库将拥有数百万个 ip。既然如此,我想知道对大型数据库的简单查询有多慢?以下查询的大致速度是多少:
SELECT * FROM table where ip= '$ip' LIMIT 1
INSERT INTO table(ip, xxx, yyy)VALUES('$ip', '$xxx', '$yyy')
在有 2.65 亿行的表上?
我可以通过创建 255^2 个表来加快查询速度,这些表的名称对应于所有可能的 ipv4 ip 地址的所有前两个数字,然后每个表最多有 255^2 行,可以容纳所有可能的第二部分到ip。因此,例如要查询 IP 地址“216.27.61.137”,它将被分成两部分,“216.27”(p1)和“61.137”(p2)。首先,脚本会选择名称为 p1 的表,然后它会检查是否有任何名为“p2”的行,如果有,它将从该行中提取所需的数据。将使用相同的过程将新的 ips 插入数据库。
如果上述计划不起作用,那么在大型数据库中加快查询速度的好方法是什么?