Tôi có hai bảng: một là ip_group_city từ ipinfodb.com chứa số ip_start để xác định vị trí của IP và khác là "lượt truy cập" với thông tin về khách truy cập trang web có chứa cột 'ip'.Hiệu quả ip-> truy vấn vị trí
Tôi cần phải chọn 10 vùng_code đầu tiên (từ ip_group_city) bằng cách kiểm tra region_code cho từng IP từ bảng "lượt truy cập".
Ngay bây giờ tôi đang tải tất cả các IP từ "thăm" vào một mảng và sử dụng những thông tin IP để truy vấn ip_group_city bởi:
SELECT region_code
FROM ip_group_city
WHERE ip_start <= INET_ATON(IP_FROM_ARR)
ORDER BY ip_start DESC LIMIT 1
Tôi không thể tạo ra một số loại truy vấn lồng nhau để làm công việc cho tôi, bởi vì hiện tại mọi thứ hơi chậm một chút :) - nó chiếm đến 30s trên máy tính xách tay xampp của tôi (AMD Turion x2 2GHz, chạy windows 7 phiên bản 64bit cuối cùng)
Đây là bảng có địa chỉ IP (lượt truy cập)
CREATE TABLE IF NOT EXISTS `visits` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`clientid` mediumint(8) unsigned NOT NULL,
`ip` varchar(15) NOT NULL,
`url` varchar(512) NOT NULL,
`client_version` varchar(64) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=49272 ;
Cảm ơn
Ngoài ra, lời khuyên về những cách khác xung quanh được chấp nhận. Có lẽ có một số db khác hiệu quả hơn cho vị vua này. Tôi có nhiều hơn 10.000 IP trong db mà tôi cần phải giải quyết để định vị. – hummingBird
Tôi không thể tái tạo sự cố. Sử dụng 'ipinfodb_one_table_small' với MySQL 5.1, truy vấn của bạn hoàn thành dưới 10ms đối với tôi (trên Linux). Tôi cho rằng những năm 30 là để thực hiện nhiều truy vấn, ví dụ: cho tất cả các lần truy cập. Nếu có, vui lòng hiển thị bảng lượt truy cập và cách bạn lặp lại nó. –
ok, tôi đang thêm cấu trúc bảng vào câu hỏi :) – hummingBird