【问题标题】:Do i use PHP while loop or SQL group_concat我使用 PHP while 循环还是 SQL group_concat
【发布时间】:2017-12-26 00:06:59
【问题描述】:

两种代码执行相同的工作,但哪一种更好用以及何时使用?

PHP 方法

$names = [];
$Query = "SELECT DISTINCT name FROM names";
$stmt = $conn->prepare($Query);
$stmt->execute();
while ($name = $stmt->fetch()) {
    $names[] = $name['epic'];
}
$names = implode(',', $names);

SQL 方法

$Query = "SELECT GROUP_CONCAT(DISTINCT name) AS names FROM names";
$stmt = $conn->prepare($Query);
$stmt->execute();
$row = $stmt->fetch();
$names = $row['names'];

【问题讨论】:

标签: php mysql sql pdo


【解决方案1】:

这取决于。 GROUP_CONCAT()有group_concat_max_len系统选项的限制,默认长度为1024(more info)。

此外,它还会连接非空值,您可能希望以不同的方式处理它们,而不是仅仅忽略它们。

【讨论】:

  • 如我所见,我可以随意增加group_concat_max_len,但是如果我将限制设置为999999,那不会对数据库产生一些影响吗?
  • @Toleo 好吧,它也受到max_allowed_packet 的约束,这可能会产生影响。更多信息请看这里:stackoverflow.com/a/5019936/197487reformatcode.com/code/mysql/…
  • @Toleo 从不问虚构的问题
  • @Toleo WAT?自动完成包含 200,000 个条目?它将发送兆字节!像往常一样,一个奇怪的请求表明缺乏知识,你应该了解什么是自动完成以及它是如何实现的。
  • @Toleo 首先创建一个包含 50,000 个逗号分隔值的字符串绝对没有意义。你越早明白这一点,你浪费的时间就越少。你真的认为用户会向下滚动 50,000 条建议吗?你在想什么?
猜你喜欢
  • 1970-01-01
  • 2011-04-02
  • 2013-01-12
  • 2013-09-16
  • 1970-01-01
  • 2011-05-31
  • 2023-03-19
  • 2014-10-18
  • 2016-11-27
相关资源
最近更新 更多