数据库相关的问题之一
1、数据库优化方面的简单应用
用PreparedStatement一般来说比Statement性能高:因为一个sql发给服务器去执行,涉及步骤(语法检查,语义分析,编译,缓存)。
有外键约束会影响插入和删除功能,如果程序能够保证数据的完整性,那在设计数据库时就去掉外键。
根据mysql扫描的原理,下面的子查询语句要比第二条关联查询的效率高:
(1) select e.name,e.salary where e.managerid=(select id from employee where name = 'zxx');
(2) select e.name,e.salary,m.name,m.salary from employee e,employee m where e.managerid=m.id and m.name = 'zxx';
sql语句全部大小写,特别是列名和表名都大写。特别是sql命令的缓存功能,更加需要统一大小写,sql 语句->发给oracle服务器->语法检查和编译成为内部指令->缓存和执行指令。根据缓存的特点,不要拼揍条件,而是用?和PreparedStatement.还有索引对查询性能的改进也是值得关注的。
2、union和union all有什么不同?
UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对产生的结果集进行排序运算,删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录,最常见的是过程表和历史表UNION。而UNION ALL 只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。
从效率上说,UNION ALL要比UNION快得多,所以,如果可以确认合并的两个结果集中不包含重复的数据,那么就使用UNION ALL。
3、分页语句
例如:取出sql表中第31到40的记录(自增主键ID)
sql server 方案1:select top 10 * from t where id not in(seletc top 30 id from t order by id) order by id.
sql server 方案2:select top 10 * from t where id not in(seletc top 40 id from t order by id) order by id desc.
mysql方案:select * from t order by id limit 30,10
oracle方案:select * from (select rownum r,* from t where r<=40) where r>30;
上一篇: Jboss AS 5/6升级时遇到的问题
下一篇: Linux zip小知识
推荐阅读
-
Mysql数据库从5.6.28版本升到8.0.11版本部署项目时遇到的问题及解决方法
-
解决mysql本地数据库不能用ip访问的问题
-
巧用jquery解决下拉菜单被Div遮挡的相关问题
-
使用wordpress的$wpdb类读mysql数据库做ajax时出现的问题该如何解决
-
MFC连接数据库时,无法启动程序,计算机丢失libmysql.dll的问题解决办法
-
Apache的status相关问题解决办法
-
冻腊肉解冻怎么解冻呢?有关冻腊肉解冻的相关问题,小编一一给大家讲解
-
oracle数据库用户的密码重置问题
-
豆腐变质能不能吃,为你科普豆腐变质的相关问题
-
C++类的相关问题、构造函数与析构函数、复制构造函数实例讲解