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 Offline
    N Offline
    Nanda_MR
    wrote on last edited by
    #1

    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

    M R J W 4 Replies 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

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

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

      Never underestimate the power of human stupidity RAH

      N 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

        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