player_id
を取得し、その人について記録されたすべての個別のアドレスを検索し、各 IP を共有するip
個別の他の のリストを取得するクエリを作成しようとしています。player_id
スキーマの例:
CREATE TABLE IF NOT EXISTS `ips` (
`ip_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`ip` int(10) unsigned NOT NULL,
PRIMARY KEY (`ip_id`)
);
CREATE TABLE IF NOT EXISTS `joins` (
`join_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`player_id` int(10) unsigned NOT NULL,
`ip_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`join_id`)
);
ips テーブルは、私が見るすべての一意の IP を記録し、players テーブルは各一意のプレーヤー (これには重要ではありません) を記録し、joins テーブルは接続するたびに記録します。
2 つのクエリでこれを行うのが私の最初のアイデアでした。これは機能し、高速です。ただし、1 つのクエリでこれを機能させたいと思っています。サブクエリを使用するクエリを試しましたが、完了するまでに時間がかかります。
これを照会する最も効率的な方法は何ですか?