Large table/slow query/ can performance be improved?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Robert

    Large table/slow query/ can performance be improved?

    I am having performance issues on a SQL query in Access. My query is
    accessing and joining several tables (one very large one). The tables are
    linked ODBC. The client submits the query to the server, separated by
    several states. It appears the query is retrieving gigs of data from the
    table and processing the joins on the client. Is there away to perform more
    of the work on the server there by minimizing the amount of extraneous table
    data moving across the network and improving performance (woefully slow
    about 6 hours)?


  • Greg D. Moore \(Strider\)

    #2
    Re: Large table/slow query/ can performance be improved?


    "Robert" <stop.spam@whit ehouse.gov> wrote in message
    news:HLFKqK.MqD @news.boeing.co m...[color=blue]
    > I am having performance issues on a SQL query in Access. My query is
    > accessing and joining several tables (one very large one). The tables are
    > linked ODBC. The client submits the query to the server, separated by
    > several states. It appears the query is retrieving gigs of data from the
    > table and processing the joins on the client. Is there away to perform[/color]
    more[color=blue]
    > of the work on the server there by minimizing the amount of extraneous[/color]
    table[color=blue]
    > data moving across the network and improving performance (woefully slow
    > about 6 hours)?[/color]

    Hmm, I haven't touched Access in years, but I recall it supporting what I
    think it called Pass Thru Queries?

    Or another option (perhaps ultimately your best one) is rewrite it as a
    stored proc on the server.

    If it's taking 6 hours, unless you're joining multigig table and doing
    something like outer joins, I've got to imagine you're right, it's Access
    trying to process things locally.

    [color=blue]
    >
    >[/color]


    Comment

    • AMIT

      #3
      Re: Large table/slow query/ can performance be improved?

      Hi,

      These are some tips from my side.

      1. Put indexes on column that is frequently used in query. This will
      help database engine to search data quickly.
      2. If the Recordset has less than 500 records, then the snapshot
      Recordset will be faster than the dynaset Recordset.
      3. Make query selection/criteria so as resultset will be small.


      Finally, can you elaborate/post what exactly u r trying to do and
      achive.

      Amit




      "Robert" <stop.spam@whit ehouse.gov> wrote in message news:<HLFKqK.Mq D@news.boeing.c om>...[color=blue]
      > I am having performance issues on a SQL query in Access. My query is
      > accessing and joining several tables (one very large one). The tables are
      > linked ODBC. The client submits the query to the server, separated by
      > several states. It appears the query is retrieving gigs of data from the
      > table and processing the joins on the client. Is there away to perform more
      > of the work on the server there by minimizing the amount of extraneous table
      > data moving across the network and improving performance (woefully slow
      > about 6 hours)?[/color]

      Comment

      • DCM Fan

        #4
        Re: Large table/slow query/ can performance be improved?

        As long as you're not using any client-side functions (Access or user-defined),
        you should be able to make this into a Pass-Through query.

        1) Copy the SQL Statement to the clipboard (or better yet, to Notepad)

        2) In Access, make a new query, but don't choose any tables.

        3) Choose Query/SQL Specific>Pass-Through

        4) Paste the SQL Statement in there

        5) Choose View/Properties

        6) Set the Connect string (and ODBC Timeout!) appropriately

        Run the query.

        I have never seen an Access query take 6 hours to run...and I have an Access
        database linked to over 68 MILLION records. Admittedly, I would never even WAIT
        that long to find out if it could ever complete!

        The slowest Access queries I've seen are the ones that I call "Query of a query
        of a query...etc." with all records included the whole time, and a criteria at
        the end; especially if Access or user-defined (VBA) function are invovled!

        You really should learn the advantages of SQL Server's "SQL langauange" vs
        Access. My favorite example is the FULL OUTER JOIN...with one statement in SQL
        Server you get both sets of records from the eaither side of join whether or
        not they match...can't do that in Access without making three queries! (OUTER,
        Non-Match OUTER, then UNION)

        Althogh the IIF in Access is convenient, it insists on evaluating both
        outcomes...SQL Server's "CASE" construct makes much more sense.

        If your query DOES use Access and/or user-defined VBA Functions, then you
        should have the whole process converted to a stored procedure, and the use a
        Pass-Through query to call the Stored Procedure. In all seriousness, EVERY
        query you need should be converted to paramaterized Stored Procedures, and
        called via Pass-Through....this is the best way to optimize performance.

        CAVEAT: Pass-Through queries cannot be used as record sources for
        linkchild/master situations (That's a JET-only feature), but you can always
        program the same functionality yourself!

        I'd be interested in seeing the SQL Statement of the 6-hr query.

        Comment

        Working...