私のプロジェクトの一部には、データベースに大量の IP を保存および取得することが含まれます。プロジェクトを開始してから数か月以内に、私のデータベースには数百万の IP があると見積もっています。その場合、大きなデータベースへの単純なクエリがどれだけ遅くなるか知りたいですか? 次のクエリのおおよその速度は次のとおりです。
SELECT * FROM table where ip= '$ip' LIMIT 1
INSERT INTO table(ip, xxx, yyy)VALUES('$ip', '$xxx', '$yyy')
2億6500万行のテーブルで?
可能なすべてのipv4 IPアドレスの最初の2つの数字すべてに対応する名前を持つ255 ^ 2テーブルを作成することで、クエリの速度を速めることができますか?各テーブルには、可能なすべての2番目の部分に対応する最大255 ^ 2行がありますに。したがって、たとえば IP アドレス「216.27.61.137」を照会するには、「216.27」(p1) と「61.137」(p2) の 2 つの部分に分割されます。最初に、スクリプトは p1 という名前のテーブルを選択し、次に「p2」という行があるかどうかを確認し、存在する場合はその行から必要なデータを取得します。同じプロセスを使用して、新しい IP をデータベースに挿入します。
上記の計画がうまくいかない場合、大規模なデータベースでクエリを高速化するための良い方法は何ですか?