mysql 语句太长_mysql的sql语句太长了?

背景信息 我有2个版本应该是什么样的逻辑。第一个是有效的,第二个是部分结果。 我有一个接收对象数组的函数。每个对象都有一个object_id。对于数组中的每个对象,我想运行一条sql语句以从数据库获取更多数据。mysql的sql语句太长了?

示例代码 在第一个示例中,我循环遍历所有对象并执行SQL语句。我从1574条记录开始,得到1574条结果。但是,当我尝试使用所有ID创建一个字符串,然后将其传递给SQL“IN”命令时,我只获得800个左右的结果。 下面是失败的代码的一部分:(我没有做剪切和粘贴代码...只是这里包括重点路段)

public function getwidgetdetails($widgets)

{

foreach $widgets as $widget {

if isset($widget['id']) {

$list_of_ids = $widget['id'] . ',' . $list_of_ids;

}

}

//remove the trailing comma

$list_of_ids = substr($list_of_ids, 0, -1);

$temparray = explode(",", $list_of_ids);

print('
temp array count:'.count($temparray) . "
"); // this correctly gives 1574

$sql = "select * from object where object_id IN(". $list_of_ids. ")";

$query = $this->db->query($sql);

$all_widget_data = $query->result_array();

print(count($all_widget_data)); -- this gives 800 + records.

}

什么我试过到目前为止

有趣的是,当我尝试通过命令行运行sql语句时,我无法粘贴完整的sql语句而没有切断它。我不知道命令行缓冲区有多大。

问题

是否有可能我的sql语句太长? 我所拥有的另一个问题是,就sql而言,更高效的是什么? 为每个对象运行单独的sql语句会更好吗?或者尝试像我一样把它合并成一个? 谢谢。

2014-01-22

dot

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值