GION,AVGLOG_SIZEFROMLOCATIONWHEREREGIONREGION‘SYDNEY’ANDREGION‘PERTH’GROUPBYREGION译者按HAVING中的条件一般用于对一些集合函数的比较如COUNT等等除此而外译者按中的条件一般用于对一些集合函数的比较如等等除此而外译者按子句中一般的条件应该写在WHERE子句中15减少对表的查询在含有子查询的SQL语句中要特别注意减少对表的查询例如低效SELECTTAB_NAMEFROMTABLESWHERETAB_NAMESELECTTAB_NAMEFROMTAB_COLUMNSWHEREVERSION604
fANDDB_VERSELECTDB_VERFROMTAB_COLUMNSWHEREVERSION604高效SELECTTAB_NAMEFROMTABLESWHERETAB_NAMEDB_VERSELECTTAB_NAMEDB_VERFROMTAB_COLUMNSWHEREVERSION604Update多个Colum
例子低效UPDATEEMPSETEMP_CATSELECTMAXCATEGORYFROMEMP_CATEGORIESSAL_RANGESELECTMAXSAL_RANGEFROMEMP_CATEGORIESWHEREEMP_DEPT0020高效UPDATEEMPSETEMP_CATSAL_RANGESELECTMAXCATEGORYMAXSAL_RANGEFROMEMP_CATEGORIESWHEREEMP_DEPT002016效率通过内部函数提高SQL效率
SELECTHEMPNOEENAMEHHIST_TYPETTYPE_DESCCOUNTFROMHISTORY_TYPETEMPEEMP_HISTORYHWHEREHEMPNOEEMPNOANDHHIST_TYPETHIST_TYPEGROUPBYHEMPNOEENAMEHHIST_TYPETTYPE_DESC通过调用下面的函数可以提高效率FUNCTIONLOOKUP_HIST_TYPETYPINNUMBERRETURNVARCHAR2
fASTDESCVARCHAR230CURSORC1ISSELECTTYPE_DESCFROMHISTORY_TYPEWHEREHIST_TYPETYPBEGINOPENC1FETCHC1INTOTDESCCLOSEC1RETURNNVLTDESC’’END
FUNCTIONLOOKUP_EMPEMPINNUMBERRETURNVARCHAR2ASENAMEVARCHAR230CURSORC1ISSELECTENAMEFROMEMPWHEREEMPNOEMPBEGINOPENC1FETCHC1INTOENAMECLOSEC1RETURNNVLENAME’’END
SELECTHEMPNOLOOKUP_EMPHEMPNOHHIST_TYPELOOKUP_HIST_TYPEHHIST_TYPECOUNTFROMEMP_HISTORYH
fGROUPBYHEMPNOHHIST_TYPE译者按经常在论坛中看到如’能不能用一个SQL写出译者按写出…’的贴子殊不知复杂的SQL的贴子译者按能不能用一个往往牺牲了执行效率往往牺牲了执行效率能够掌握上面的运用函数解决问题的方法在实际工作中是非常有意义的义的17使用表的别名Alias使用表的别名当在SQL语句中连接多个表时请使用表的别名并把别名前缀于每个Colum
上这样一来就可以减少解析的时间并减少那些由Colum
歧义引起的语法错误译者注Colum
歧义指的是由于SQL中不同的表具有相同的Colum
名当SQL语译者注译者注当的归属句中出现这个Colum
时SQL解析器无法判断这个Colum
的归属18用EXISTS替代IN在许多基于基础表的查询中为了满足一个条件往往需要对另一个表进行联接在这种情况下使用EXISTS或NOTEXISTS通常将提高查询的效率低效SELECTFROMEMPr