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.
  • 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