gpt4 book ai didi

php - MySQL - 高效地交叉引用 ID 数组

转载 作者:行者123 更新时间:2023-11-29 03:09:13 26 4
gpt4 key购买 nike

有一个用户 ID 集合的 POST 请求被传递到 PHP 脚本中。正在将此集合与“user_table”中的现有 ID 进行比较。

这是通过将 id 数组连接到一个字符串中来实现的,并在查询中直接使用以逗号分隔的 id 的结果字符串。

我担心这不会很好地扩展,并可能成为一场灾难!任何人都可以分享一些关于解决此类问题的传统方法的智慧吗?

$id_json_array = postVar('u');
$user_ids = json_decode($id_json_array);
$str_ids = join(',', $user_ids);

$result = mysql_query(
"SELECT u.user_id AS i
, u.user_name AS u
FROM user_table u
WHERE u.user_id IN ($str_ids)"
) or die (mysql_error ());

ids 数组可能有几千,而“user_table”很大(数万或数十万,索引等)

提前致谢。

最佳答案

我看这里没有问题,只要 user_id 被索引。

在一个类似的实例中,我曾经构建了一个临时 MEMORY 表,其中包含您的 $str_ids 的内容,并与该临时表进行了 JOIN。这个技巧的原因是:

  • (主要原因)列表相当大,我担心我会在查询长度上遇到一些限制
  • (附带原因)我不得不在我的脚本过程中多次使用这个列表

构建(可能还有索引)这样一个临时表的开销可能会也可能不会抵消使用它可能带来的好处。就我而言,它没有。

编辑:哦和this thread如果您事先知道列表中元素的最大数量,则提出一个优雅的替代方案。

关于php - MySQL - 高效地交叉引用 ID 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10967449/

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