gpt4 book ai didi

带有比较条件的 mysql 批量 SELECT

转载 作者:行者123 更新时间:2023-11-29 23:12:38 24 4
gpt4 key购买 nike

我有一个包含超过 2M 行的大 ip_locations 表。给定一个特定的ip,选择一个ip_location记录:

SELECT * FROM ip_locations WHERE ip >= start_ip and ip <= end_ip;

现在的问题是,给定一个 ip 数组 [ip1, ip2, ip3, ...],如何在批量选择中有效地执行此操作。批量的大小可以是1000+。执行此操作的一个简单方法可能是

SELECT * FROM ip_locations WHERE (
(ip1 >= start_ip and ip1 <= end_ip) ||
(ip2 >= start_ip and ip2 <= end_ip) ||
....
);

但我确信应该有更优雅、更有效的方法来做到这一点。另外,如何获取批量选择结果中对应记录关联的每个ip?

最佳答案

引用@Mihai的想法,你可以这样做,即通过以下方式:

SELECT 
ip_locations.*
FROM
ip_locations
INNER JOIN
(
SELECT ip1 AS ip_to_check
UNION
SELECT ip2 AS ip_to_check
....
UNION
SELECT ipN AS ip_to_check
) AS ip_tab
ON (ip_tab.ip_to_check >= ip_locations.start_ip
and ip_tab.ip_to_check <= ip_locations.end_ip)

关于带有比较条件的 mysql 批量 SELECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27997561/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com