Declaring prepared statements
Optimize prepared cursor statements by using the FROM clause
of DECLARE CURSOR.
Line 2 of this example shows a cursor declared with a prepared
   statement:
PREPARE s FROM "SELECT * FROM table WHERE ", condition
DECLARE c CURSOR FOR sWhile this has no performance impact with IBM® Informix® database drivers, it can become a bottleneck when using non-IBM Informix databases:
Statement preparation consumes a lot of memory and processor resources.
Declaring a cursor with a    prepared statement is a native IBM    Informix feature, which consumes only one
real    statement preparation. Non-IBM Informix databases do    not support this
feature, so the statement is prepared twice (once for the     PREPARE,
and once for the DECLARE). When used in a big loop,
   this code can cause performance problems.
To optimize the code, use the 
FROM clause in the DECLARE 
  statement:DECLARE c CURSOR FROM "SELECT * FROM table WHERE " || conditionBy using this solution only one statement preparation will be done by the database server.
Note: This performance problem does not occur with 
DECLARE statements
   using static SQL.