惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI
MongoDB | Blog
MongoDB | Blog
Blog — PlanetScale
Blog — PlanetScale
腾讯CDC
U
Unit 42
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Apple Machine Learning Research
Apple Machine Learning Research
M
MIT News - Artificial intelligence
人人都是产品经理
人人都是产品经理
Hugging Face - Blog
Hugging Face - Blog
MyScale Blog
MyScale Blog
小众软件
小众软件
博客园 - 三生石上(FineUI控件)
N
Netflix TechBlog - Medium
阮一峰的网络日志
阮一峰的网络日志
博客园 - Franky
Recent Announcements
Recent Announcements
A
About on SuperTechFans
Stack Overflow Blog
Stack Overflow Blog
The GitHub Blog
The GitHub Blog
D
Docker
H
Hackread – Cybersecurity News, Data Breaches, AI and More

博客园 - buru

django begining Update 两个表之间更新数据问题 用户控件与应用页面的事件顺序 linq小问题总结 “尝试读取或写入受保护的内存”错误处理 firefox浏览器的默认事件 配置rails运行环境 通过c#和ironruby学习 ruby语言 操作Access数据库碰到的几个问题 asp.net的CodeDom zz天涯-关于职业生涯的 一个线程管理器 zz两个存储过程 看《C#线程参考手册》 Mediator 中介者模式 让firefox支持IE的一些属性 IE与firefox取得事件对象的函数(zz) proxy模式 c#通过url获取文件
SQL 语句查询与性能
buru · 2007-12-28 · via 博客园 - buru

2007-12-28 00:42  buru  阅读(239)  评论()    收藏  举报

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数据库模型非常适合。
(...此处待请教)。