Truy vấn của bạn có vẻ đúng. Vấn đề của bạn dường như là vấn đề về hiệu suất, không phải là vấn đề logic. Bạn sẽ cần đảm bảo rằng cả emailaddress
của bạn và id
các trường được lập chỉ mục chính xác trong cơ sở dữ liệu - nếu không với gần một triệu hàng, tôi sẽ mong đợi truy vấn của bạn bị treo.
(Tôi đoán rằng id
có thể đã được lập chỉ mục, nhưng không phải emailaddress
. Đặc biệt khi thực hiện phép nối giữa các bảng, nếu một trong hai trường này không được lập chỉ mục, bạn sẽ phải xem RẤT NHIỀU lần quét toàn bộ bảng.)
Chỉnh sửa:
Thấy nhận xét của bạn là trường hợp này, bạn có thể làm theo tài liệu tại http://dev.mysql.com/doc/refman/5.0/en/create-index.html để tạo chỉ số. Vì vậy, một cái gì đó như:
CREATE INDEX email_index ON emaildata(emailaddress) USING BTREE;