我试图了解语句缓存在参数化准备语句的情况下是否有用。
据我了解
- 如果我使用缓存,则查询将根据其“字符串”进行缓存。
- 在这种情况下,如果查询具有不同的参数值,则它是不同的/新语句/字符串 wrt 缓存。
- 此外,当参数发生变化时,结果也会发生变化。
- 由于准备好的语句是参数化的,在这种情况下使用缓存真的有用吗?
我正在使用 JDBC/Snaq 数据库池/MySQL 数据库。
这里的语句缓存指的是两种不同的情况:
- JAVA:Snaq DB 池提供了有助于缓存语句的 ConnectionCache 类。
- MySQL:DB 还提供了缓存查询和结果的方法。http://dev.mysql.com/doc/refman/5.1/en/query-cache.html
我的困惑很简单:
- 如果我要在缓存中搜索查询/对应结果,我将根据字符串比较进行搜索。
- 如果参数值发生变化,则查询字符串也会发生变化。
- 这将导致缓存中具有不同参数值集的相同查询的不同条目。
希望我澄清我的问题。