【问题标题】:How to make SELECT more faster without NESTED LOOP如何在没有嵌套循环的情况下使 SELECT 更快
【发布时间】:2017-10-08 14:09:56
【问题描述】:

你好,我正在为 T 恤的网上商店制作一个网站。每个产品(来自所有 1400)都有自己的 ID (idedro),但每个 ID 都有不同的颜色,有时是一种,有时是二十种。 我需要在自己的图片中显示每个产品及其下面的所有颜色,但我认为循环内的循环占用过多的 CPU 时间。有没有什么办法可以用一个循环来实现它,或者enter image description herebe with JOIN 或prepared statments?

$querycount = mysqli_query($link,"SELECT DISTINCT (idedro) 
    FROM megadb WHERE catteniskiipotnici=1 ORDER BY idedro ASC");

  while ($rowcounts = mysqli_fetch_assoc($querycount)) {


  $result1 = mysqli_query($link,"SELECT color 
    FROM megadb WHERE idedro='$rowcounts[idedro]'");

       while ($row1=mysqli_fetch_array($result1)) { echo $row1[color]; } 
      }

【问题讨论】:

  • 这个问题有很多深度。你问的是数据分页,我猜这可以用一个好的前端库很好地处理。您使用的是 Kendo、Angular、React 还是其他一些前端库?
  • 不,我不使用任何库。每个页面上都会有 52 种产品,上面有图片,图片下方会有代表颜色的小方块。
  • 我猜下面的解决方案会起作用。我个人建议稍微重新组织你的架构。使用比原始代码更现代的前端将更容易实现您想要的。在这种情况下,我想发送到客户端环境的输出将是一个数据集,其中包含 INNER JOIN 查询中的所有行,然后客户端将对其进行干净的格式化。

标签: php mysql sql loops nested


【解决方案1】:

这应该可以使用GROUP_CONCAT()

SELECT idedro, group_concat(color)
FROM megadb 
WHERE catteniskiipotnici=1 
GROUP BY idedro
ORDER BY idedro ASC

SQL Fiddle

MySQL 5.6 架构设置

CREATE TABLE megadb
    (`idedro` int, `color` varchar(5), `catteniskiipotnici` int)
;

INSERT INTO megadb
    (`idedro`, `color`, `catteniskiipotnici`)
VALUES
    (1, 'blue', 1),
    (2, 'blue', 1),
    (2, 'red', 1),
    (3, 'blue', 1),
    (3, 'red', 1),
    (3, 'white', 1),
    (4, 'blue', 0)
;

查询 1

    SELECT idedro, group_concat(color)
    FROM megadb 
    WHERE catteniskiipotnici=1 
    GROUP BY idedro
    ORDER BY idedro ASC

Results

| idedro | group_concat(color) |
|--------|---------------------|
|      1 |                blue |
|      2 |            blue,red |
|      3 |      blue,red,white |

【讨论】:

  • @BorislavGanev 不客气,小心group concat 您需要将group_concat_max_len mySQL 变量设置为大于默认 1024 字节的值(查看文档以了解操作方法)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多