from [url]http://www.beyondrails.com/blogs/44[/url]
[b]1,SQL风格尽量保持一致[/b]
优化前:
[code]
SELECT column1*4 FROM Table1 WHERE COLUMN1 = COLUMN2 + 7
select Column1 * 4 FROM Table1 WHERE column1=(column2 + 7)
[/code]
优化后:
[code]
SELECT column1 * 4 FROM Table1 WHERE column1 = column2 + 7
SELECT column1 * 4 FROM Table1 WHERE column1 = column2 + 7
[/code]
1,关键字大写,column名小写
2,table名首字母大写
3,每个单词和算术操作符间隔为一个空格
保持一致风格是因为,很多DBMS对同样的查询解析过一次后就会缓存起来,其中对查询语句的大小写和空格间隔都要求一致,这个估计和Rails的查询缓存是一个道理,以QUERY SQL语句作为Key来缓存。
[b]2,另一组性能优化[/b]
性能按从差到好:
[code]
... WHERE MOD(decimal_column, 1) = 0
... WHERE CAST(decimal_column AS CHAR(7)) LIKE '%.00%'
... WHERE decimal_column = CAST(decimal_column AS INTEGER)
[/code]
[b]1,SQL风格尽量保持一致[/b]
优化前:
[code]
SELECT column1*4 FROM Table1 WHERE COLUMN1 = COLUMN2 + 7
select Column1 * 4 FROM Table1 WHERE column1=(column2 + 7)
[/code]
优化后:
[code]
SELECT column1 * 4 FROM Table1 WHERE column1 = column2 + 7
SELECT column1 * 4 FROM Table1 WHERE column1 = column2 + 7
[/code]
1,关键字大写,column名小写
2,table名首字母大写
3,每个单词和算术操作符间隔为一个空格
保持一致风格是因为,很多DBMS对同样的查询解析过一次后就会缓存起来,其中对查询语句的大小写和空格间隔都要求一致,这个估计和Rails的查询缓存是一个道理,以QUERY SQL语句作为Key来缓存。
[b]2,另一组性能优化[/b]
性能按从差到好:
[code]
... WHERE MOD(decimal_column, 1) = 0
... WHERE CAST(decimal_column AS CHAR(7)) LIKE '%.00%'
... WHERE decimal_column = CAST(decimal_column AS INTEGER)
[/code]