Warning
SingleStore 9.0 gives you the opportunity to preview, evaluate, and provide feedback on new and upcoming features prior to their general availability. In the interim, SingleStore 8.9 is recommended for production workloads, which can later be upgraded to SingleStore 9.0.
NOPARAM
On this page
Disables the parameterization of constants in a query before a query plan is compiled.
Syntax
NOPARAM (expression)
Arguments
-
expression: any expression.
This may be a constant (most common), column name, the result of another function, or a math operation.
Remarks
-
When
NOPARAM
is used, the constants in a query are not converted into parameters.So, a separate query plan is generated even for the queries with the same structure. -
Parameterization can only be disabled for constants in a query.
Examples
Example 1: Let us look at few queries and their query plans when NOPARAM
function is used.QUERY_
field of the information_
table.
For example, the following two queries with different parameter values,
SELECT * from t WHERE x = 5;SELECT * from t WHERE x = 30;
use the same query plan:
QUERY_TEXT: SELECT * from t WHERE x = @
Whereas, when the constants in these queries are enclosed in NOPARAM
, a separate plan is generated for each query.
SELECT * from t WHERE x = NOPARAM(5);SELECT * from t WHERE x = NOPARAM(30);
different query plans are generated:
QUERY_TEXT: SELECT * from t WHERE x = NOPARAM(5)
QUERY_TEXT: SELECT * from t WHERE x = NOPARAM(30)
Example 2: Let us look at an example where NOPARAM
is used for variable offsets.orders
with two fields orderid
and orderdate
.
The following queries with different parameter values generate the same query plan, which can be viewed in the QUERY_
field of the information_
table.
SELECT COUNT(orderid) FROM orders WHERE orderdate <= DATE_ADD(CURRENT_DATE(), INTERVAL -30 DAY);SELECT COUNT(orderid) FROM orders WHERE orderdate <= DATE_ADD(CURRENT_DATE(), INTERVAL -20 DAY);
QUERY_TEXT: SELECT COUNT(orderid) FROM orders WHERE orderdate <= DATE_ADD(CURRENT_DATE(), INTERVAL @ DAY)
Whereas when NOPARAM
function is used for the same queries,
SELECT COUNT(orderid) FROM orders WHERE orderdate <= NOPARAM(DATE_ADD(CURRENT_DATE(), INTERVAL -30 DAY));SELECT COUNT(orderid) FROM orders WHERE orderdate <= NOPARAM(DATE_ADD(CURRENT_DATE(), INTERVAL -20 DAY));
different query plans are generated:
QUERY_TEXT: SELECT COUNT(orderid) FROM orders WHERE orderdate <= NOPARAM(DATE_ADD(CURRENT_DATE(), INTERVAL -30 DAY))
QUERY_TEXT: SELECT COUNT(orderid) FROM orders WHERE orderdate <= NOPARAM(DATE_ADD(CURRENT_DATE(), INTERVAL -20 DAY))
Other examples of NOPARAM
function usage:
INSERT INTO t(a) VALUES (NOPARAM(20));SELECT NOPARAM(x) + NOPARAM(SUM(x)) FROM t;
Last modified: February 23, 2023