摘要: 24. 用EXPLAIN PLAN 分析SQL语句 EXPLAIN PLAN 是一个很好的分析SQL语句的工具,它甚至可以在不执行SQL的情况下分析语句. 通过分析,我们就可以知道ORACLE是怎么样连接表,使用什么方式扫描表(索引扫描或全表扫描)以及使用到的索引名称. 你需要按照从里到外,从上到下的次序解读分析的结果. EXPLAIN PLAN分析的结果是用缩进的格式排列的, 最内部的操作将被... 阅读全文
posted @ 2009-11-17 16:05 黑石社员 阅读(164) 评论(0) 推荐(0)
摘要: 操作符优化 IN 操作符用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格。但是用IN的SQL性能总是比较低的,从ORACLE执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别:ORACLE 试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查询外层的表记录,如果转换成功则直接采用多个表的连接方式查询。由此可见用 IN的SQL至少多了一个转换... 阅读全文
posted @ 2009-11-17 16:05 黑石社员 阅读(156) 评论(0) 推荐(0)
摘要: 1.查询的模糊匹配 尽量避免在一个复杂查询里面使用 LIKE '%parm1%'—— 红色标识位置的百分号会导致相关列的索引无法使用,最好不要用. 解决办法: 其实只需要对该脚本略做改进,查询速度便会提高近百倍。改进方法如下: a、修改前台程序——把查询条件的供应商名称一栏由原来的文本输入改为下拉列表,用户模糊输入供应商名称时,直接在前台就帮忙定... 阅读全文
posted @ 2009-11-17 16:04 黑石社员 阅读(587) 评论(0) 推荐(0)
摘要: 人们在使用SQL时往往会陷入一个误区,即太关注于所得的结果是否正确,而忽略了不同的实现方法之间可能存在的性能差异。这种性能差异在大型的或是复杂的数据库环境中(如联机事务处理OLTP或决策支持系统DSS)中表现得尤为明显。 不良的SQL往往来自于不恰当的索引设计、不充份的连接条件和不可优化的where子句。在对它们进行适当的优化后,其运行速度有了明显地提高!   为了更直观地说明问题,所有实例中... 阅读全文
posted @ 2009-11-17 16:03 黑石社员 阅读(208) 评论(0) 推荐(0)
摘要: MySQL索引分析和优化 索引用来快速地寻找那有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所 有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可 迅速得到目标记录所在的位置。如果表有1000个记录,通过索引查找记录至少要比顺序扫... 阅读全文
posted @ 2009-11-17 15:37 黑石社员 阅读(122) 评论(0) 推荐(0)
摘要: 假设有如下表: create table AAA (a varchar2(32) ,b varchar2(32),c date);在a和c列上建普通索引: create index iN_AAA_1 on AAA (a, c); 1.索引左前缀性的第一层意思:必须用到索引的第一个字段。select * from AAA where b=:xxx and c=sysdate;则不会用到索引,因为必须... 阅读全文
posted @ 2009-11-17 15:00 黑石社员 阅读(229) 评论(0) 推荐(0)
摘要: 一、索引的概念索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。二、索引的特点1.索引可以加快数据库的检索速度2.索引降低了数据库插入、修改、删除等维护任务的速度3.索引创建在表上,不能创建在视图上4.索引既可以直接创建,也可以间接创建5.可以在... 阅读全文
posted @ 2009-11-17 11:41 黑石社员 阅读(543) 评论(0) 推荐(0)