รายละเอียดเกี่ยวกับประสิทธิภาพการทำงานแบบสอบถามในฐานข้อมูลการเข้าถึง

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 209126 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
moderate: ต้องแมโครพื้นฐาน รหัส และทักษะในการทำงานร่วมกัน

บทความนี้สามารถใช้ได้เฉพาะกับฐานข้อมูล Microsoft Access (.mdb)

สำหรับข้อมูล Access 97 รุ่นของบทความนี้ ดู112112.
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

บทนำ

บทความนี้อธิบายถึงวิธีการปรับปรุงประสิทธิภาพของแบบสอบถาม ใน Microsoft Access 2000 ใน Microsoft Access 2002 และ Microsoft Office Access 2003 หัวข้อต่อไปนี้ถูกรวมไว้:
  • แบบสอบถาม Optimizer สำหรับโปรแกรมของฐานข้อมูล Microsoft Jet
  • ช่วงเวลาการสอบถาม
  • กำลังวิเคราะห์ประสิทธิภาพ
  • เคล็ดลับการปรับปรุงประสิทธิภาพของแบบสอบถาม
บทความนี้อนุมานว่า ฐานข้อมูลของคุณมีตารางภายในเครื่องแทนของตารางที่เชื่อมโยง (หรือแนบ) ถ้ามีการเชื่อมโยงตารางของคุณ ข้อมูลนี้ยังคงใช้ อย่างไรก็ตาม มีปัญหาอื่น ๆ ที่แบบสอบถามส่งผลต่อประสิทธิภาพการทำงานกับตารางที่เชื่อมโยง สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการปรับปรุงประสิทธิภาพของตารางที่เชื่อมโยง คุณสามารถค้นหาฐานความรู้ของ Microsoft โดยใช้สายอักขระต่อไปนี้:
odbc และ optimizing และตาราง

ข้อมูลเพิ่มเติม

แบบสอบถาม Optimizer สำหรับโปรแกรมของฐานข้อมูล Microsoft Jet

โปรแกรมฐานข้อมูลการ Jet ประกอบด้วยคอมโพเนนต์ต่าง ๆ แต่คอมโพเนนต์ที่สำคัญที่สุดในการสอบถาม (และความซับซ้อนมากที่สุด) คือ การ Optimizer การ Optimizer ได้โดยใช้ต้นทุน ซึ่งหมายความ ว่า Optimizer ที่กำหนดต้นทุนเวลาให้งานแต่ละแบบสอบถาม และจากนั้น เลือกรายการแพงน้อยที่สุดของงานการดำเนินการที่สร้างชุดผลลัพธ์ที่ต้อง อีกต่อไปที่งานนำไปปฏิบัติ งานนั้นจะยิ่งแพง

การตัดสินใจว่า กลยุทธ์ในการสอบถามใดใช้ Optimizer ที่ใช้สถิติ สัดส่วนต่อไปนี้คือบางตัวคูณที่ตามสถิติเหล่านี้:
  • จำนวนของเรกคอร์ดในตาราง
  • หมายเลขหน้าข้อมูลในตาราง
  • ตำแหน่งที่ตั้งของตาราง
  • หรือไม่มีที่อยู่ของดัชนี
  • ดัชนีมีลักษณะเฉพาะ
ขึ้นอยู่กับสถิติเหล่านี้ Optimizer นั้นแล้วเลือกกลยุทธ์ดีที่สุดภายในแบบสอบถามสำหรับการใช้แบบสอบถามเฉพาะ

สถิติถูกปรับปรุงทุกครั้งที่แบบสอบถามถูกคอมไพล์ แบบสอบถามที่มีค่าสถานะสำหรับการคอมไพล์เมื่อคุณบันทึกการเปลี่ยนแปลงใด ๆ กับแบบสอบถาม (หรือตารางที่มีการขีดเส้นใต้) และ เมื่อมีกระชับฐานข้อมูล ถ้าแบบสอบถามมีค่าสถานะสำหรับการคอมไพล์ การคอมไพล์และการปรับปรุงสถิติเกิดในครั้งถัดไปที่มีรันการสอบถาม คอมไพล์โดยปกติใช้เวลาจากหนึ่งสองถึงสี่วินาที

ถ้าคุณสามารถเพิ่มจำนวนเรกคอร์ดที่สำคัญฐานข้อมูลของคุณ คุณต้องเปิด และบันทึกการสอบถามของคุณเพื่อ recompile การสอบถามแล้ว ตัวอย่างเช่น ถ้าคุณออกแบบ และทดสอบการสอบถาม โดยใช้ชุดข้อมูลตัวอย่างขนาดเล็กแล้ว คุณต้อง re-compile แบบสอบถามหลังจากที่มีเพิ่มเรกคอร์ดเพิ่มเติมในฐานข้อมูล เมื่อคุณทำเช่นนี้ คุณต้องการตรวจสอบให้แน่ใจว่า ประสิทธิภาพการทำงานแบบสอบถามที่ดีที่สุดได้เมื่อโปรแกรมประยุกต์ของคุณมีการใช้

หมายเหตุ:คุณไม่สามารถดู Jet แบบปรับให้เหมาะสมโปรแกรมฐานข้อมูล และคุณไม่สามารถระบุวิธีการปรับการตั้งค่าการสอบถาม อย่างไรก็ตาม คุณสามารถใช้ Documenter ฐานข้อมูลการตรวจสอบว่ามีที่อยู่ของดัชนีและดัชนีจะไม่ซ้ำกันอย่างไร

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับปัญหาที่อาจเกิดขึ้นเมื่อคุณใช้ Documenter ฐานข้อมูลใน Access 2000 คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
207782การใช้ฐานข้อมูลข้อผิดพลาดของ ACC2000: Documenter ถ้าวัตถุที่เปิดอยู่

ช่วงเวลาการสอบถาม

มีหน่วยวัดเวลาที่สำคัญสองสำหรับแบบสอบถามที่เลือก:
  • เวลาที่จะแสดงหน้าจอแรกของข้อมูล
  • เวลาที่จะได้รับการบันทึกสุดท้าย
ถ้าแบบสอบถามส่งกลับค่าเพียงหนึ่งหน้าจอของข้อมูล เวลาเหล่านี้สองประเมินได้เหมือนกัน ถ้าแบบสอบถามส่งกลับระเบียนจำนวนมาก หน่วยวัดเวลาเหล่านี้อาจแตกต่างกันมาก

ถ้าการประเมินที่สองจะเหมือนกันเมื่อคุณดูแบบสอบถามที่เลือกในมุมมองแผ่นข้อมูล คุณเห็นหน้าจอของข้อมูลและจำนวนของระเบียนที่ส่งกลับ โดยแบบสอบถาม เช่น "บันทึก 1 ของn." If it is faster for the Jet database engine to display the first screen of data than to complete the query and then retrieve the last record, you see a screen of data but noNin "Record 1 ofN". กระบวนการNvalue is blank until the query is complete, or until you scroll down to the last record.

This behavior is the result of the Jet database engine selecting one of two performance strategies:
  • Complete the query, and then display data
  • Display data, and then complete the query
You cannot control the strategy that is used. The Jet database engine selects the strategy that is most efficient.

Analyzing performance

If you are using Microsoft Access 7.0, Access 97, Access 2000, Access 2002, or Access 2003, you can use the Performance Analyzer to analyze queries in your database. Because the query performance analysis is closely tied to the Jet database engine, the Performance Analyzer suggests adding indexes only when the indexes will actually be used by the Jet database engine to optimize the query. This means that the Performance Analyzer can provide performance tips that are more specific to your database than the general suggestions listed below in the "Tips to improve query performance" section.

To run the Performance Analyzer in Access 7.0, in Access 97, in Access 2000, in Access 2002, or in Access 2003, follow these steps:

On theเครื่องมือเมนู คลิกAnalyzeแล้ว คลิกประสิทธิภาพการทำงาน.

Tips to improve query performance

To improve query performance, try these tips:
  • Compact your database

    When you compact your database you can speed up queries. When you compact your database, the records of the table are reorganized so that the records reside in adjacent database pages that are ordered by the primary key of the table. This improves the performance of the sequential scans of records in the table because only the minimum number of database pages now have to be read to retrieve the records that you want. After you compact your database, run each query to compile the query so that each query will now have the updated table statistics.
  • Index a field

    Index any field that is used to set criteria for the query fields and the index fields on both sides of a join. Or, create a relationship between these fields. When you create a relationship with enforced referential integrity, the Jet database engine creates an index on the foreign key if one does not already exist. Otherwise, the Jet database engine uses the existing index.

    หมายเหตุ:The Jet database engine automatically optimizes a query that joins an Access table on your hard disk and an ODBC server table if the Access table is small and if the joined fields are indexed. In this case, Access improves performance by requesting only the required records from the server. Make sure that tables you join from different sources are indexed on the join fields.
  • Select the smallest data type that is appropriate

    When you define a field in a table, select the smallest data type that is appropriate for the data in the field. Also, make sure that fields that you plan to use in joins have the same data types or compatible data types, such as Autonumber and Number (if theFieldSizeมีการตั้งค่าคุณสมบัติจำนวนเต็มยาว).
  • Add only the fields that you must have

    When you create a query, add only the fields that you must have. In fields that are used to set criteria, click to clear theShow:check box if you do not want to display those fields.
  • Save the SQL statement as a query

    ถ้าการrecordsourceproperty for a form or for report is set to an SQL statement, save the SQL statement as a query and then set therecordsourceproperty to the name of the query.
  • Avoid calculated fields

    Avoid calculated fields in subqueries. If you add a query that contains a calculated field to another query, the expression in the calculated field may slow performance in the top-level query. In the following example, query Q1 is used as the input for query Q2:
    Q1: SELECT IIF([MyColumn]="Yes","Order Confirmed","Order Not Confirmed") AS X FROM MyTable;
    Q2: SELECT * FROM Q1 WHERE X="Order Confirmed";
    เนื่องจากการiifexpression in Q1 cannot be optimized, Q2 also cannot be optimized. If an expression that cannot be optimized is nested in a subquery, all the query cannot be optimized.

    ทางเลือกที่จะสร้างแบบสอบถามมีดังนี้:
    Q1: SELECT * จาก MyTable ที่ MyColumn = "ใช่"
    ถ้านิพจน์ที่จำเป็นในการแสดงผล พยายามที่จะทำให้นิพจน์ตัวควบคุม ในฟอร์ม หรือรายงาน ตัวอย่างเช่น คุณสามารถเปลี่ยนแปลงแบบสอบถามก่อนหน้านี้ในการสอบถามพารามิเตอร์ที่พร้อมท์ให้ใส่ค่าของ MyColumn และจากนั้น ให้ยึดฟอร์มหรือรายงานบนแบบสอบถาม ในแบบฟอร์ม หรือรายงาน คุณสามารถเพิ่มตัวควบคุมที่คำนวณได้ที่แสดง "Hello" หรือ "Goodbye ขึ้นอยู่กับค่าที่อยู่ใน MyColumn แล้ว

    สร้างแบบสอบถามต่อไปนี้:
    PARAMETERS [To see confirmed orders, enter Yes. To see unconfirmed orders, enter No.] Text;
    SELECT *
    FROM MyTable
    WHERE MyColumn = [To see confirmed orders, enter Yes. To see unconfirmed orders, enter No.];
    In the calculated control on the form or on report, type:
    =IIF([MyColumn]="Yes","Order Confirmed","Order Not Confirmed")
  • Specify Group By

    When you group records by the values in a joined field, specify Group By for the field that is in the same table as the field that you are totaling (calculating an aggregate on). For example, in the Northwind.mdb sample database, if you create a query that totals the Quantity field in the Order Details table and then groups by OrderID, you can specify Group By for the OrderID field in the Order Details table. If you specify Group By for the OrderID field in the Orders table, Access must join all the records first and then perform the aggregate, instead of performing the aggregate and then joining only the required fields.

    For greater speed, use Group By on as few fields as possible. Alternatively, use theFirstfunction if you can.

    If a totals query includes a join, consider grouping the records in one query and then adding this query to a separate query that performs the join. When you do this, performance may be improved with some queries.
  • Avoid restrictive query criteria

    Avoid restrictive query criteria on calculated fields and on non-indexed fields if you can. Use criteria expressions that you can optimize.
  • Test your query performance in a field that is used in a join between tables

    If you use criteria to restrict the values in a field that is used in a join between tables with a one-to-many relationship, test whether the query runs faster with the criteria placed on the "one" side or on the "many" side of the join. In some queries, you may realize faster performance by adding the criteria to the field on the "one" side of the join instead of on the "many" side of the join.
  • Index sort fields

    Index the fields that you use for sorting.
  • Use make-table queries to create tables

    If your data seldom changes, use make-table queries to create tables from your query results. Use the resulting tables instead of queries as the basis for your forms, your reports, or your other queries. Make sure that you add indexes according to the guidelines that you read in this article.
  • Avoid using domain aggregate functions

    Avoid using domain aggregate functions, such as theDLookupfunction to access data from a table that is not in the query. Domain aggregate functions are specific to Access, and this means that the Jet database engine cannot optimize queries that use domain aggregate functions. Instead, add the query to the table that the function was accessing or create a subquery.
  • Use fixed column headings

    If you are creating a crosstab query, use fixed column headings whenever possible.
  • Use operators

    ใช้แบบBetween...Andoperator, theในoperator, and the=operator on indexed fields.
  • Optimize performance on the server

    For bulk update queries against ODBC data sources, optimize performance on the server by setting theFailOnErrorproperty to Yes.

ข้อมูลอ้างอิง

For more information about optimizing performance in Microsoft Access 2000, clickวิธีใช้ Microsoft Accessในการวิธีใช้เมนู ชนิดoptimize performanceในผู้ ช่วย Office หรือ Answer Wizard แล้วคลิกค้นหาเมื่อต้องการดูหัวข้อนั้น
For more information about optimizing performance in Microsoft Access 2002, clickวิธีใช้ Microsoft Accessในการวิธีใช้เมนู ชนิดImprove performance of an Access databaseในผู้ ช่วย Office หรือ Answer Wizard แล้วคลิกค้นหาเมื่อต้องการดูหัวข้อนั้น

For more information about improving performance in Access 2003, clickMicrosoft Office Access Helpในการวิธีใช้เมนู ชนิดImprove performance of an Access databaseในการค้นหาbox in the Assistance pane, and then clickStart searchingเมื่อต้องการดูหัวข้อนั้น

For more information about using indexes in Access 2000, click the following article number to view the article in the Microsoft Knowledge Base:
209564ACC2000: Compound indexes must restrict first indexed field

คุณสมบัติ

หมายเลขบทความ (Article ID): 209126 - รีวิวครั้งสุดท้าย: 17 กันยายน 2554 - Revision: 5.0
ใช้กับ
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
Keywords: 
kbquery kbhowto kbperformance kbinfo kbusage kbmt KB209126 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:209126

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com