优化数据库查询

时间:2016-11-08 18:20:58

标签: java mysql postgresql

我的问题是我们何时应该担心从sql数据库请求给定任务的数据量是多少?

让我说我有PostgreSql数据库。我有一个产品表,产品有20个字段。

在系统中,有些地方实际上只需要产品ID,名称和价格。有人争辩说,我只应该问数据库中的这3个字段是否有效。但我觉得开发人员总是更容易productService.getProduct(id)然后选择他们需要的字段,而不是为这些特定字段创建单独的类或查询。

对于查询的速度是否真的重要 - 如果我问3或20个字段?它会增加多少负荷?

(我是Java开发人员,心态为“早期优化是所有邪恶的根源”。)

1 个答案:

答案 0 :(得分:1)

与所有优化一样,重要时。探查器和其他工具(例如postgres' EXPLAIN ANALYZE)会通知您。

实际机制取决于很多事情;正在使用的数据库,表/架构,表空间设置等等,所以不可能给出任何明确的答案,但由于移动的数据量不同,无论你是否'重新移动100,000行10列或100,000行3列。

如果从磁盘读取相同数量的页面,实际查询可能看不到显着差异,但内存和网络使用自然会有所不同。

幸运的是,如果原始查询成为瓶颈,您可以重构代码和查询以选择更少的数据。