这是与问题here相关的问题,我的问题是从Java应用程序的角度来看的。如果我有一个 Web 服务根据允许获取的客户端从数据库返回数据,如何以最佳方式查询数据库?
- 在 Java 代码中使用最大的列集和过滤值进行选择是否有意义?
- 还是构造许多 SQL PreparedStatements/NativeQueries 更好,每个都只要求真正返回的列?
- 构建仅由连接表而不是选定列确定的基本查询是一个很好的折衷方案(这些就是全部)?
什么对数据库和可维护的应用程序都有好处?我目前所知道的:
- 大多数 JDBC 驱动程序/SQL 数据库优化 SQL 查询并缓存优化版本以供将来请求。必须分析和比较每个新查询,必须找到或创建优化版本......并保存在内存中......在最坏的情况下,每个新变体都会产生新的优化版本。这些简单选择的优化版本是否相同?
select name, surname from person
select name from person
- 编写许多选择的变体是丑陋的——每个变体都必须经过测试、维护、快速......