A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 聆听 中级黑马   /  2012-10-28 18:08  /  1285 人查看  /  0 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

-自己总结的,希望对大家有所帮助!
简化业务逻辑:
书写规范、统一
避免隐式数据类型转换
避免select  * ——表列数太多
尽量避免全表扫描——考虑索引和复合索引的第一列
书写规范——大小写等
Exists/Not Exists 代替 In/Not In——绝大多数情况(判断是否存在)
在满足业务要求的时候,Union all 代替Union(将多个表的查询集合成一条显示)
尽量避免使用 distinct、trim  (去除重复项,比较耗时,原因是它要把所有的数据取出来在去对比)


索引列:
不要使用 like ‘%abc’,可以使用‘abc%’(写在前面无法用Oracle索引)
不要在索引列使用函数
尽量用 >= 代替 >(>=少查询一个数)
尽量使用复合索引的第一列
避免使用is null、is not null   


in与exists的区别
in:确定给定的值是否与子查询或列表中的值相匹配。
exists:指定一个子查询,检测行的存在。

--效率高
select u.* from users u where exists(select userid from student where userid=u.id);
--效率低
select * from student where userid in (select id from users);

in与=的区别
select name from student where name in('李','高','张');
select name from student where name='李',name='高',name='张';
这两句的查询结果相同。

union与union all的区别:
union不允许有重复值,union all允许有重复值(相对而言效率高)
union操作符用于合并两个或多个select语句结果集
(注意:union内部的select语句必须拥有相同的数量的列,列也必须拥有相同的数据类型。同时,每条select语句中的列的顺序必须相同。)

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马