2016-11-08 90 views
0

我的问题是我们应该在什么时候担心从sql数据库中要求给定的任务需要多少数据?优化数据库查询

可以说我有PostgreSql数据库。我有一个产品表和产品有20个领域。

在一个系统中,一些地方实际上只需要产品ID,名称和价格。有些人认为,我应该只从数据库中提出这三个字段来提高效率。但是我觉得开发者总是要做到productService.getProduct(id),然后选择他们需要的字段,比为这些特定字段创建单独的类或查询要容易得多。

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

(我是Java开发人员使用的“早期的优化是一切罪恶的根源。”的心态)

+1

如果您只询问3个字段,则只有N个字段才能获得3个字段,因此需要将更少的数据从数据库服务器传输到连接的应用程序。其简单的 – RiggsFolly

+0

主要区别将在您的客户端和您的db +序列化/反序列化之间传输 –

+0

恐怕它太宽泛/主要基于意见 –

回答

1

与所有的优化,当它的事项。分析器和其他工具(例如postgres'EXPLAIN ANALYZE)会让你知道。

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

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

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