oracle数据库中sql执行问题 本帖最后由 jxahut 于 2012-05-01 12:12:31 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 where 里面条件 and 是先执行 and 前面 还是后面条件这个其实和你写的顺序不大,这个先后顺序,是数据库来根据表/索引的信息来决定的。例如一个 学生表, 有学号,姓名,性别其中 学号是主键, 姓名上面有个索引。找 名字叫 强妹 的女生:SELECT * FROM 学生 WHERE 姓名='强妹' AND 性别 = '女'与SELECT * FROM 学生 WHERE 性别 = '女' AND 姓名='强妹' 数据库在处理 SQL 以前,都会去分析, 发现 查询的条件中, 姓名上面有索引,而性别上面没有。 那么优先根据 姓名的条件, 去检索,然后再去把通过索引得到的数据,去筛选 性别=女的比如表里面共有10000行。姓名叫 '强妹' 的只有一个。那么通过索引,一步就定位到那一行。然后再判断这一行数据的 性别字段, 是不是 = '女'假如 姓名/性别 都没有索引呢?那就是执行 全表扫描。不分先后。什么意思呢?就是假如 表里面10000行数据。那就是从第一行开始, 查看 姓名与性别 条件。 满足的返回。 不满足的丢弃。 直到100行都处理完。并不是一口气把所有的数据,都放到内存里面,然后 姓名判断一次, 去掉部分, 性别判断一次,再去掉部分。 数据相应字段生成head头,超难。。高手来回答 求一oracle 函数或者存储过程 不知道表的结构,如何操作表,并按照一定的顺序显示表里的记录。 oracle导出的dmp文件自动消失 OEM浏览网页问题 sql loader 调用函数 请教高手解决一张oracle复杂报表 个为老大,看看我这,那错了,我刚学编写存储过程,我很急! 在 windows2000server下怎样安装oracle9i? linux客户端连接oracle数据库报ORA-12154 oracle大对象字段BFILE和FTP上传的比较 oracle 高手进入参观一下,帮小弟解决解决
这个其实和你写的顺序不大,这个先后顺序,是数据库来根据表/索引的信息来决定的。
例如一个 学生表, 有学号,姓名,性别
其中 学号是主键, 姓名上面有个索引。找 名字叫 强妹 的女生:
SELECT * FROM 学生 WHERE 姓名='强妹' AND 性别 = '女'
与
SELECT * FROM 学生 WHERE 性别 = '女' AND 姓名='强妹' 数据库在处理 SQL 以前,都会去分析, 发现 查询的条件中, 姓名上面有索引,而性别上面没有。 那么优先根据 姓名的条件, 去检索,然后再去把通过索引得到的数据,去筛选 性别=女的
比如表里面共有10000行。姓名叫 '强妹' 的只有一个。
那么通过索引,一步就定位到那一行。
然后再判断这一行数据的 性别字段, 是不是 = '女'
假如 姓名/性别 都没有索引呢?
那就是执行 全表扫描。
不分先后。
什么意思呢?
就是假如 表里面10000行数据。
那就是从第一行开始, 查看 姓名与性别 条件。 满足的返回。 不满足的丢弃。 直到100行都处理完。
并不是一口气把所有的数据,都放到内存里面,然后 姓名判断一次, 去掉部分, 性别判断一次,再去掉部分。