一般来说,
对于这么一个语句  Select * from table  A  order by   x   limit  y;
都是先排序,再取前y个的。如果我现在修改Postgresql的源代码 ,让这句话执行时效率更高一些也就是说,直接取前y个,不排序,(前提是y不是很大)
这个是可以用一个简单的算法做到的关键是我现在刚开始上手,对Postgresql还不是很熟悉只知道这样的操作 应该在查询优化 和查询执行里面去做但是具体这样的操作应该涉及哪些文件或者函数呢?从哪开始着手呢?请教达人,谢谢拉

解决方案 »

  1.   

    不会吧。PGSQL提供的还不够优化吗?你还要手动去改?你数据有多大 ?
      

  2.   

    不是,只是练习编程,熟悉Postgresql源码是我的一个作业
    恩我正在想有没有好的思路。
      

  3.   

    回复3楼:我知道PGSQL的效率已经比较高了这么说吧,我不想更改任何功能,只是想在现有功能不变的情况下,优化一下select 和limit执行的过程也许效率不会提高多少,但是这个作业的主要目的还是通过编程练习来提高一下对PGSQL的熟悉
      

  4.   

    只是熟悉PGSQL的话。你好好运行下 她的好多命令。熟悉一下她表固有的特性等等。不用源码也可以 。
      

  5.   

    主要是这个是一个作业题目 必须要做的
    我现在对上述的那个select语句 进行了调试跟踪基本清楚 整个流程中,调用哪些方法了。关键就是着手改的时候 有些头疼是否应该不理会逻辑查询 ,直接在物理查询的时候 ,强制的不让它排序,也就是
    不修改它生成的plan树。还是生成plan的时候就要修改 我还是不是很清楚