如果多个用户执行相同的 SQL 语句,那么应用程序可能会从使用 SQL 语句高速缓存中获益。如果语句中的所有字符都完全匹配,数据库服务器会将其视为相同的语句。
SELECT * FROM ORDERS WHERE order_num = :hostvar
此种应用程序会从使用 SQL 语句高速缓存中获益,因为 用户很容易在 SQL 语句高速缓存中找到 该 SQL 语句。
SELECT * FROM customer, orders WHERE customer.customer_num = orders.customer_num AND order_date > "01/01/07" SELECT * FROM customer, orders WHERE customer.customer_num = orders.customer_num AND order_date > "01/01/2007"
如果语句包含主变量,那么数据库服务器在将该语句存储到 SQL 语句高速缓存中时,会使用占位符替换主变量。 因此,优化该语句时无需数据库服务器访问主变量的值。 在某些情况下,由于为某一列存储的分布信息会精确的告知优化器通过过滤器的行数,所以如果数据库服务器访问主变量的值,可能会以另外的方式优化该语句。