我的问题是我们何时应该担心从sql数据库请求给定任务的数据量是多少?
让我说我有PostgreSql数据库。我有一个产品表,产品有20个字段。
在系统中,有些地方实际上只需要产品ID,名称和价格。有人争辩说,我只应该问数据库中的这3个字段是否有效。但我觉得开发人员总是更容易productService.getProduct(id)
然后选择他们需要的字段,而不是为这些特定字段创建单独的类或查询。
对于查询的速度是否真的重要 - 如果我问3或20个字段?它会增加多少负荷?
(我是Java开发人员,心态为“早期优化是所有邪恶的根源”。)
答案 0 :(得分:1)
与所有优化一样,重要时。探查器和其他工具(例如postgres' EXPLAIN ANALYZE)会通知您。
实际机制取决于很多事情;正在使用的数据库,表/架构,表空间设置等等,所以不可能给出任何明确的答案,但由于移动的数据量不同,无论你是否'重新移动100,000行10列或100,000行3列。
如果从磁盘读取相同数量的页面,实际查询可能看不到显着差异,但内存和网络使用自然会有所不同。
幸运的是,如果原始查询成为瓶颈,您可以重构代码和查询以选择更少的数据。