【发布时间】:2014-06-12 15:43:25
【问题描述】:
我正在尝试检查这个查询问题是否有更好的解决方案:
找到具有相同速度和 RAM 的 PC 型号对。
因此,每个结果对仅显示一次,即 (i, j) 而不是 (j, i)。 结果集:编号较高的模型、编号较低的模型、速度和 RAM。
我想出了:
select max(model), min(model), speed, ram
from PC
group by speed, ram
having count(model) = 2 and max(model) <> min(model)
得到
speed ram
--------------------------------
1260 1232 500 32
1233 1232 500 64
1233 1121 750 128
PC 表如下所示:
model speed ram
------------------------
1232 500 64
1121 750 128
1233 500 64
1121 600 128
1121 600 128
1233 750 128
1232 500 32
1232 450 64
1232 450 32
1260 500 32
1233 900 128
1233 800 128
【问题讨论】:
-
定义“更好”:更具可读性?少sql?性能更高?什么?
-
完成,在性能方面
-
如果你的 SQL 系统有
explain关键字,它有时可以显示你可以改进的地方,或者至少它可能(或可能不)使用的索引。 -
如果您希望我们帮助优化查询,您需要向我们展示表和索引定义,以及每个表的行数。也许您的表格定义不佳。也许索引没有正确创建。也许您认为您在该列上没有索引。没有看到表和索引定义,我们无法判断。我们还需要行计数,因为这会极大地影响查询优化。如果您知道如何执行
EXPLAIN或获取执行计划,请将结果也放入问题中。如果您没有索引,请尽快访问use-the-index-luke.com。 -
Table PC 有以下列(代码、型号、速度、内存、高清、光盘、价格),其中型号是主键。我更感兴趣的是通过更好的 sql 查询本身获得更好的性能,例如更少的 io 命中和低 cpu 使用率等。
标签: sql performance sql-optimization