这是与问题here有关的问题,我的问题是来自Java应用程序的视角。 如何优化查询数据库,如果我有一个web服务从数据库返回数据取决于客户端允许获取什么?从JDBC SQL中省略列SELECT选择过早优化?
- 在Java代码中使用最大的一组列和过滤器值进行选择是否合理?
- 或者是更好地构建许多SQL PreparedStatements/NativeQueries,每个只会询问将真正返回的列吗?
- 是一个很好的折衷方案来构造基本查询只由连接的表而不是选定的列确定(这些都是)?
对于数据库和可维护应用程序都有什么好处?我现在所知道的:
- 大多数JDBC驱动程序/ SQL数据库优化SQL查询并缓存未来请求的优化版本。每一个新的查询都必须进行分析和比较,必须找到或创建优化版本......并保存在内存中......最坏的情况下,每个新变种都会生成新的优化版本。将这些简单选择相同的优化版本?
select name, surname from person
select name from person
- 写选择的多种变体是丑陋的 - 每一个变种都必须经过测试,维护,快...