求教:SQL查询实现原理? 高分相赠!!!!

macrogu 2002-06-20 12:36:04
假设有一SQL语句:SELECT * FROM table1 WHERE (field1>0 OR field2="test") AND field3<100 ,SQL分析器是如何分析执行的呢?我只想知道WHERE后面的语句实现.
我想首先应语法分析,根据算符优先把各个字段推进栈,然后再pop出来查找(像表达式求值那样)。
如何高效查找?如果feild1,field2,field3 都建立了索引(应为b+树),那么找到匹配的纪录集应该很快,然后再根据 AND ,OR 进行集合的交,并,得到最后的结果集。但是如果(field1>0 OR field2="test")只有一条纪录,而 field3<100 如果有10000条纪录,那么其实找到(field1>0 OR field2="test")再判一下这条纪录的field3是否<100就可以了,用不着费时再去找到10000条纪录后做交集。那么如何判断并忧化呢?
还有如果field2和field3都没有建索引,那么是否只能根据物理纪录一条条判断,岂不是很慢?
我只看过一点数据库原理,还望这方面的高人指点!!!
...全文
71 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lawrence444 2002-06-21
  • 打赏
  • 举报
回复
你这里涉及优化的问题。数据库查询里有很多优化算法,不是我们在这里可以说的清的,请参考数据库的书,比如
《数据库系统实现》,Hector Garcia-Molina等著
macrogu 2002-06-20
  • 打赏
  • 举报
回复
谢谢,有没有地方下载?
sunlyqc 2002-06-20
  • 打赏
  • 举报
回复
请看《SQL 实用全书》!

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧