您的位置:首页 > 数据库

SQL 语句查询与性能

2007-12-28 00:42 148 查看
1、筛选记录:

Where,最好用单个表中的主键进行筛选。

当条件为Not、<>时将忽略索引。

like运算符将进行全表扫描。

Where子句中的函数将可能禁用某字段的索引。


SELECT * FROM EDITION WHERE To_char(Print_Date,'DD-MON-YYYY')='01-jan-2005';

用索引的方法-->
SELECT * FROM EDITION WHERE PRINT_DATE=TO_DATE('01-jan-2005','DD-MON-YYYY');
2、当表很小时,读取表要比读取表上的索引更加高效。

3、复合索引的使用:WHERE  子字句的条件中 复合索引的顺序也决定是否启用复合索引。

4、Having 与WHERE

WHERE 子句在数据库读取记录是(发生I/O活动后)筛选记录。Having 子句(GROUP BY 子句的一部分)

会筛选聚合组,并在数据库所有I/O活动之后进行筛选.以下两句 第二句更高效

SELECT ISBM,PUBLISHER_ID,AVG(LIST_PRICE)

FROM EDITION

GROUP BY ISBN HAVING AVG(LIST_PRICE) >10 AND PUBLISHER_ID>5
后面一个条件移到WHERE子句下,将少读5条记录

SELECT ISBM,PUBLISHER_ID,AVG(LIST_PRICE)

FROM EDITION WHERE PUBLISHER_ID>5

GROUP BY ISBN HAVING AVG(LIST_PRICE) >10
===============

SQL语句连接查询的几个规则:

1、先进性大的筛选--对最大的几个表进行筛选,以此减少记录连接。

2、使用索引。较小的表除外。读取的大表的记录的百分比较高的也不用索引。

3、嵌套子句半连接---使用子查询能够调整连接,至少能够简化连接。这种调整对高度规范化的OLTP数据库模型非常适合。

(...此处待请教)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: