Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. Database & SysAdmin
  3. Database
  4. Retrieve N Record.

Retrieve N Record.

Scheduled Pinned Locked Moved Database
databasehelpquestion
17 Posts 7 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • N Nanda_MR

    Hi Guys! I am trying to retrieve middle records. The below query is working perfectly. The problem is my table is too huge (more then 10 lak reocrd) it is taking more time. Is there any other solution? [This is sample query]

    select *
    from (select t.*, rownum rn
    from (SELECT *
    FROM (select * from Productlist)) t
    Where rownum <= 10000)
    Where rn > 9990

    Regards, Nanda

    R Offline
    R Offline
    RyanEK
    wrote on last edited by
    #3

    Try...

    select * from (
    select top 10000 *, row_number() over (order by rownum) as rn
    from productlist
    ) t
    where rn between 9990 and 10000

    modified on Monday, February 21, 2011 1:26 AM

    N 1 Reply Last reply
    0
    • M Mycroft Holmes

      Assuming you are using SQL Server, have some Google Foo[^]

      Never underestimate the power of human stupidity RAH

      N Offline
      N Offline
      Nanda_MR
      wrote on last edited by
      #4

      Hey Thanks, Thanks for your valuable reply. I am using Oracle. The rownum is dynamical assign to each row. so SQL server method is not working. and I tried view it is working but when order by used the result is coming wrong. Thanks and regards, Nanda

      M 1 Reply Last reply
      0
      • R RyanEK

        Try...

        select * from (
        select top 10000 *, row_number() over (order by rownum) as rn
        from productlist
        ) t
        where rn between 9990 and 10000

        modified on Monday, February 21, 2011 1:26 AM

        N Offline
        N Offline
        Nanda_MR
        wrote on last edited by
        #5

        Hi Thanks for Query. It is reduce execution time. but when I try to access above 500000 (Top 500000) records then its taking 2 to 3 min exeuting any other solution. For if 900000 it is taking 4 to 5 min. Regards, Nanda

        1 Reply Last reply
        0
        • N Nanda_MR

          Hi Guys! I am trying to retrieve middle records. The below query is working perfectly. The problem is my table is too huge (more then 10 lak reocrd) it is taking more time. Is there any other solution? [This is sample query]

          select *
          from (select t.*, rownum rn
          from (SELECT *
          FROM (select * from Productlist)) t
          Where rownum <= 10000)
          Where rn > 9990

          Regards, Nanda

          J Offline
          J Offline
          Jorgen Andersson
          wrote on last edited by
          #6

          SELECT *
          FROM (
          SELECT *
          FROM Productlist pl
          ORDER BY somefield
          )
          WHERE ROWNUM BETWEEN 9991 AND 10000

          Note that you can never trust the DB to give you the records in the same order every time, so you need the order by clause. The field you're ordering by should be indexed if you want to get any speed to your query

          List of common misconceptions

          N 1 Reply Last reply
          0
          • J Jorgen Andersson

            SELECT *
            FROM (
            SELECT *
            FROM Productlist pl
            ORDER BY somefield
            )
            WHERE ROWNUM BETWEEN 9991 AND 10000

            Note that you can never trust the DB to give you the records in the same order every time, so you need the order by clause. The field you're ordering by should be indexed if you want to get any speed to your query

            List of common misconceptions

            N Offline
            N Offline
            Nanda_MR
            wrote on last edited by
            #7

            Thanks. Problem is the table is too big it contains 10 lak to 90 lak data. while access perticular data (ex: 1500000 to 1501000) then it is taking so much time. The Inner Query execute all records (90 lak) and the outer query filter 9991 to 10000. This is my problem. Regards, Nanda

            J 1 Reply Last reply
            0
            • N Nanda_MR

              Hey Thanks, Thanks for your valuable reply. I am using Oracle. The rownum is dynamical assign to each row. so SQL server method is not working. and I tried view it is working but when order by used the result is coming wrong. Thanks and regards, Nanda

              M Offline
              M Offline
              Mycroft Holmes
              wrote on last edited by
              #8

              Nanda_MR wrote:

              I am using Oracle

              That would have been useful info, also what is a lak, presumably lots. So you know how to get the paged set, you real question is how to optimise the query (using rownum) or if there is a better method to use in orable. And I'm afraid there I cannot help you.

              Never underestimate the power of human stupidity RAH

              B N L 3 Replies Last reply
              0
              • N Nanda_MR

                Thanks. Problem is the table is too big it contains 10 lak to 90 lak data. while access perticular data (ex: 1500000 to 1501000) then it is taking so much time. The Inner Query execute all records (90 lak) and the outer query filter 9991 to 10000. This is my problem. Regards, Nanda

                J Offline
                J Offline
                Jorgen Andersson
                wrote on last edited by
                #9

                That's why you need a index on the column you order by, it's already sorted. The optimizer will take care of the inner query. Do you have an index on the column you're sorting by?

                List of common misconceptions

                1 Reply Last reply
                0
                • N Nanda_MR

                  Hi Guys! I am trying to retrieve middle records. The below query is working perfectly. The problem is my table is too huge (more then 10 lak reocrd) it is taking more time. Is there any other solution? [This is sample query]

                  select *
                  from (select t.*, rownum rn
                  from (SELECT *
                  FROM (select * from Productlist)) t
                  Where rownum <= 10000)
                  Where rn > 9990

                  Regards, Nanda

                  W Offline
                  W Offline
                  Wendelius
                  wrote on last edited by
                  #10

                  Hi, If you do have an ascending surrogate key, one efficient way would be to use that. For example if you have a field called Id and the values are coming from ordered sequence your query could be something like:

                  select *
                  from ProductList a,
                  (select b.Id,
                  count(*) over (order by b.Id) as runcount
                  from productlist b
                  where b.Id > :lastFetchedId) subq
                  where a.Id = subq.Id
                  and subq.runcount <= 10

                  The need to optimize rises from a bad design.My articles[^]

                  N 1 Reply Last reply
                  0
                  • M Mycroft Holmes

                    Nanda_MR wrote:

                    I am using Oracle

                    That would have been useful info, also what is a lak, presumably lots. So you know how to get the paged set, you real question is how to optimise the query (using rownum) or if there is a better method to use in orable. And I'm afraid there I cannot help you.

                    Never underestimate the power of human stupidity RAH

                    B Offline
                    B Offline
                    Bernhard Hiller
                    wrote on last edited by
                    #11

                    Mycroft Holmes wrote:

                    what is a lak, presumably lots

                    Indians have a different style of counting big numbers. A lak is one hundred thousand (Indian style: 1,00,000), a crore is ten million (Indian style: 1,00,00,000). But that's still easy. Stay a few days in India to get confused with more puzzling Indian style information....

                    1 Reply Last reply
                    0
                    • W Wendelius

                      Hi, If you do have an ascending surrogate key, one efficient way would be to use that. For example if you have a field called Id and the values are coming from ordered sequence your query could be something like:

                      select *
                      from ProductList a,
                      (select b.Id,
                      count(*) over (order by b.Id) as runcount
                      from productlist b
                      where b.Id > :lastFetchedId) subq
                      where a.Id = subq.Id
                      and subq.runcount <= 10

                      The need to optimize rises from a bad design.My articles[^]

                      N Offline
                      N Offline
                      Nanda_MR
                      wrote on last edited by
                      #12

                      Hi Mika, I done similarly in View. Add a new column unique ID and I am adding rownum. In this case I am executing query without any delay. But one problem is there. In case if order by condition added the output of query is coming wrong(Bug) or a block of rows is order. Regards, Nanda

                      W 1 Reply Last reply
                      0
                      • M Mycroft Holmes

                        Nanda_MR wrote:

                        I am using Oracle

                        That would have been useful info, also what is a lak, presumably lots. So you know how to get the paged set, you real question is how to optimise the query (using rownum) or if there is a better method to use in orable. And I'm afraid there I cannot help you.

                        Never underestimate the power of human stupidity RAH

                        N Offline
                        N Offline
                        Nanda_MR
                        wrote on last edited by
                        #13

                        Hi RAH, I am trying execute my query but it is taking much time(4 to 10 min) to avoid that problem and searching efficient query or solution. The your last post provide some ideas. it reduce execution time. Regards, Nanda

                        1 Reply Last reply
                        0
                        • M Mycroft Holmes

                          Nanda_MR wrote:

                          I am using Oracle

                          That would have been useful info, also what is a lak, presumably lots. So you know how to get the paged set, you real question is how to optimise the query (using rownum) or if there is a better method to use in orable. And I'm afraid there I cannot help you.

                          Never underestimate the power of human stupidity RAH

                          L Offline
                          L Offline
                          Luc Pattyn
                          wrote on last edited by
                          #14

                          Mycroft Holmes wrote:

                          also what is a lak

                          Google would happily have told you ... :-D

                          Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum

                          Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.

                          M 1 Reply Last reply
                          0
                          • N Nanda_MR

                            Hi Mika, I done similarly in View. Add a new column unique ID and I am adding rownum. In this case I am executing query without any delay. But one problem is there. In case if order by condition added the output of query is coming wrong(Bug) or a block of rows is order. Regards, Nanda

                            W Offline
                            W Offline
                            Wendelius
                            wrote on last edited by
                            #15

                            Hi,

                            Nanda_MR wrote:

                            I am adding rownum

                            Just to check: Did you notice that I didn't use rownum at all because it's unreliable in this context (for many different reasons). The example I created shouldn't encounter any of the problems rownum has since the example is based on a running total count on an unique and ascending field.

                            The need to optimize rises from a bad design.My articles[^]

                            1 Reply Last reply
                            0
                            • L Luc Pattyn

                              Mycroft Holmes wrote:

                              also what is a lak

                              Google would happily have told you ... :-D

                              Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum

                              Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.

                              M Offline
                              M Offline
                              Mycroft Holmes
                              wrote on last edited by
                              #16

                              I naturally did the google thing, the response was nowhere as succinct as the answer I got here :laugh:

                              Never underestimate the power of human stupidity RAH

                              L 1 Reply Last reply
                              0
                              • M Mycroft Holmes

                                I naturally did the google thing, the response was nowhere as succinct as the answer I got here :laugh:

                                Never underestimate the power of human stupidity RAH

                                L Offline
                                L Offline
                                Luc Pattyn
                                wrote on last edited by
                                #17

                                Unfortunately conciseness isn't Google's primary strength. :((

                                Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum

                                Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.

                                1 Reply Last reply
                                0
                                Reply
                                • Reply as topic
                                Log in to reply
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes


                                • Login

                                • Don't have an account? Register

                                • Login or register to search.
                                • First post
                                  Last post
                                0
                                • Categories
                                • Recent
                                • Tags
                                • Popular
                                • World
                                • Users
                                • Groups