|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
平台即服务PaaS、基础设施即服务IaaS、软件即服务SaaS都是我们比较熟悉的MySQL学习教程,现在又出现了数据库即服务DBaaS,以基于云的方式存储结构化数据。oracle|功能|优化
13.盘算纪录条数
和一样平常的概念相反,count(*)比count(1)稍快,固然假如能够经由过程索引检索,对索引列的计数仍然是最快的.比方COUNT(EMPNO)
(译者按:在CSDN论坛中,已经对此有过相称强烈热闹的会商,作者的概念其实不非常正确,经由过程实践的测试,上述三种办法并没有明显的功能不同)
14.用Where子句交换HAVING子句
制止利用HAVING子句,HAVING只会在检索出一切纪录以后才对了局集举行过滤.这个处置必要排序,总计等操纵.假如能经由过程WHERE子句限定纪录的数量,那就可以削减这方面的开支.
比方:
低效:
SELECTREGION,AVG(LOG_SIZE)
FROMLOCATION
GROUPBYREGION
HAVINGREGIONREGION!=‘SYDNEY’
ANDREGION!=‘PERTH’
高效
SELECTREGION,AVG(LOG_SIZE)
FROMLOCATION
WHEREREGIONREGION!=‘SYDNEY’
ANDREGION!=‘PERTH’
GROUPBYREGION
(译者按:HAVING中的前提一样平常用于对一些汇合函数的对照,如COUNT()等等.除此而外,一样平常的前提应当写在WHERE子句中)
15.削减对表的查询
在含有子查询的SQL语句中,要出格注重削减对表的查询.
比方:
低效
SELECTTAB_NAME
FROMTABLES
WHERETAB_NAME=(SELECTTAB_NAME
FROMTAB_COLUMNS
WHEREVERSION=604)
AND DB_VER=(SELECTDB_VER
FROMTAB_COLUMNS
WHEREVERSION=604)
高效
SELECTTAB_NAME
FROMTABLES
WHERE(TAB_NAME,DB_VER)
=(SELECTTAB_NAME,DB_VER)
FROMTAB_COLUMNS
WHEREVERSION=604)
Update多个Column例子:
低效:
UPDATEEMP
SETEMP_CAT=(SELECTMAX(CATEGORY)FROMEMP_CATEGORIES),
SAL_RANGE=(SELECTMAX(SAL_RANGE)FROMEMP_CATEGORIES)
WHEREEMP_DEPT=0020;
高效:
UPDATEEMP
SET(EMP_CAT,SAL_RANGE)
=(SELECTMAX(CATEGORY),MAX(SAL_RANGE)
FROMEMP_CATEGORIES)
WHEREEMP_DEPT=0020;
16.经由过程外部函数进步SQL效力.
SELECTH.EMPNO,E.ENAME,H.HIST_TYPE,T.TYPE_DESC,COUNT(*)
FROMHISTORY_TYPET,EMPE,EMP_HISTORYH
WHEREH.EMPNO=E.EMPNO
ANDH.HIST_TYPE=T.HIST_TYPE
GROUPBYH.EMPNO,E.ENAME,H.HIST_TYPE,T.TYPE_DESC;
经由过程挪用上面的函数能够进步效力.
FUNCTIONLOOKUP_HIST_TYPE(TYPINNUMBER)RETURNVARCHAR2
AS
TDESCVARCHAR2(30);
CURSORC1IS
SELECTTYPE_DESC
FROMHISTORY_TYPE
WHEREHIST_TYPE=TYP;
BEGIN
OPENC1;
FETCHC1INTOTDESC;
CLOSEC1;
RETURN(NVL(TDESC,’?’));
END;
FUNCTIONLOOKUP_EMP(EMPINNUMBER)RETURNVARCHAR2
AS
ENAMEVARCHAR2(30);
CURSORC1IS
SELECTENAME
FROMEMP
WHEREEMPNO=EMP;
BEGIN
OPENC1;
FETCHC1INTOENAME;
CLOSEC1;
RETURN(NVL(ENAME,’?’));
END;
SELECTH.EMPNO,LOOKUP_EMP(H.EMPNO),
H.HIST_TYPE,LOOKUP_HIST_TYPE(H.HIST_TYPE),COUNT(*)
FROMEMP_HISTORYH
GROUPBYH.EMPNO,H.HIST_TYPE;
(译者按:常常在论坛中看到如’能不克不及用一个SQL写出….’的贴子,却不知庞大的SQL常常就义了实行效力.可以把握下面的使用函数办理成绩的办法在实践事情中长短常成心义的)
(待续)
不管怎么样,市场的结果已经证明MySQL具有性价比高、灵活、MySQL学习教程广为使用和具有良好支持的特点。 |
|