Hi Clinton,
I suppose formatted sql is slow might be caused by database engine waste
time to parse the white space, not only \r,\n,\t, but ' ' as well. And
actually ' ' is more than the other three white in real world.
So I recommend following code,
public static String tidySql(String sql) {
String[] values = sql.split("\\n");
for (int i = 0; i < values.length; i++) {
values[i] = values[i].trim();
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < values.length; i++) {
sb.append(values[i]).append(' ');
}
return sb.toString();
}
This code would reduce the size of the formatted sql, and should be helpful.
Best regards,
Jiming
On Tue, Feb 3, 2009 at 3:41 AM, Clinton Begin <[email protected]>wrote:
> This is a good summary. I've been watching the other thread.
>
> I think I might have found a possible candidate:
>
> public class SqlText implements SqlChild {
> //...
> public void setText(String text) {
> this.text = text.replace('\r', ' ').replace('\n', ' ').replace('\t', '
> ');
> this.isWhiteSpace = text.trim().length() == 0;
> }
> //...
> }
>
> I'll have to wait to get home to check to see if this is called on
> each execution, instead of just once at SQL mapper build time.
>
> Cheers,
> Clinton
>