Informasi tentang performa query dalam database Access

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 209126 - Melihat produk di mana artikel ini berlaku.
Moderat: Memerlukan dasar makro, coding, dan interoperabilitas keterampilan.

Artikel ini hanya berlaku untuk Microsoft Access database (.mdb).

Untuk mengakses Versi 97 artikel ini, lihat 112112.
Perbesar semua | Perkecil semua

Pada Halaman ini

PENDAHULUAN

Artikel ini membahas cara mengoptimalkan performa query di Microsoft Access 2000, Microsoft Access 2002 dan Microsoft Office Access 2003. Topik-topik berikut termasuk:
  • Query Optimizer untuk Microsoft Jet database mesin
  • Waktu pertanyaan
  • Menganalisis kinerja
  • Tips untuk meningkatkan kinerja permintaan
Artikel ini mengasumsikan bahwa database Anda memiliki tabel lokal Alih-alih tabel terkait (atau terlampir). Jika tabel Anda terhubung, ini informasi masih berlaku. Namun, ada masalah tambahan yang mempengaruhi permintaan kinerja dengan meja-meja yang terkait. Untuk informasi lebih lanjut tentang meningkatkan kinerja dengan meja-meja yang terhubung, Anda dapat mencari Basis Pengetahuan Microsoft oleh menggunakan string berikut:
ODBC dan mengoptimalkan dan tabel

INFORMASI LEBIH LANJUT

Query Optimizer untuk Microsoft Jet database engine

Mesin database Jet berisi beberapa komponen, tetapi yang paling komponen penting untuk pertanyaan (dan yang paling kompleks) adalah pengoptimasi. The Pengoptimal berbasis biaya. Ini berarti bahwa Pengoptimal menetapkan biaya waktu untuk masing-masing permintaan tugas dan kemudian memilih daftar paling murah tugas untuk melakukan yang menghasilkan hasil tujuan yang ditetapkan. Semakin lama tugas yang diperlukan untuk melakukan, adalah tugas yang lebih mahal.

Untuk memutuskan apa strategi permintaan untuk digunakan, Optimizer menggunakan statistik. Faktor-faktor berikut adalah beberapa faktor bahwa statistik ini didasarkan pada:
  • Jumlah record di sebuah tabel
  • Jumlah halaman data dalam tabel
  • Lokasi tabel
  • Apakah indeks hadir
  • Bagaimana unik indeks yang
Berdasarkan statistik ini, Pengoptimal kemudian memilih yang terbaik kueri internal strategi untuk berurusan dengan permintaan tertentu.

The Statistik diperbarui setiap kali permintaan dikompilasi. Permintaan ditandai untuk kompilasi saat Anda menyimpan perubahan untuk query (atau meja yang mendasari) dan Ketika database dipadatkan. Jika permintaan ditandai untuk mengkompilasi, kompilasi dan memperbarui statistik terjadi saat berikutnya kueri menjalankan. Kompilasi biasanya mengambil dari satu detik untuk empat detik.

Jika Anda menambahkan sejumlah besar catatan ke database Anda, Anda harus membuka dan kemudian simpan pertanyaan Anda untuk mengkompilasi ulang permintaan. Sebagai contoh, jika Anda merancang dan kemudian menguji permintaan dengan menggunakan seperangkat sampel data, Anda harus re-compile permintaan setelah Catatan tambahan ditambahkan ke database. Ketika Anda melakukan ini, Anda ingin untuk memastikan bahwa performa query yang optimal yang dicapai ketika Anda aplikasi ini digunakan.

Catatan Anda tidak dapat melihat Jet database engine optimasi skema, dan Anda tidak dapat menentukan cara mengoptimalkan permintaan. Namun, Anda dapat menggunakan Database Documenter untuk menentukan apakah indeks hadir dan bagaimana unik indeks adalah.

Untuk informasi lebih lanjut tentang masalah yang mungkin terjadi saat Anda menggunakan Database Documenter pada Access 2000, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
207782ACC2000: Kesalahan menggunakan Database Documenter jika objek terbuka

Waktu pertanyaan

Ada dua signifikan waktu pengukuran untuk permintaan Pilih:
  • Waktu untuk menampilkan layar pertama data
  • Waktu untuk mendapatkan catatan terakhir
Jika permintaan kembali hanya satu layar data, dua waktu pengukuran yang sama. Jika permintaan kembali banyak catatan, waktu pengukuran dapat sangat berbeda.

Jika kedua pengukuran sama ketika Anda melihat permintaan pilih dalam Datasheet pandangan, Anda melihat sebuah layar data dan jumlah catatan yang dikembalikan oleh permintaan, seperti "Catatan 1 dari N." Jika itu lebih cepat untuk Jet database engine untuk menampilkan layar pertama data dari untuk menyelesaikan pertanyaan dan kemudian mengambil catatan terakhir, Anda melihat sebuah layar data tetapi tidak N dalam "Catatan 1 N". The N nilai kosong hingga permintaan selesai, atau sampai Anda gulir turun terakhir catatan.

Perilaku ini adalah hasil dari mesin database Jet memilih salah satu dari dua strategi kinerja:
  • Menyelesaikan permintaan, dan kemudian menampilkan data
  • Menampilkan data, dan kemudian lengkapi permintaan
Anda tidak dapat mengendalikan strategi yang digunakan. Jet database mesin memilih strategi yang paling efisien.

Menganalisis kinerja

Jika Anda menggunakan Microsoft akses 7.0, Access 2000, Access 97 Akses 2002, atau akses 2003, Anda dapat menggunakan analisa kinerja untuk menganalisis queries dalam database Anda. Karena analisis kinerja permintaan erat terikat Jet database engine, kinerja Analyzer menunjukkan menambahkan Indeks hanya ketika indeks akan benar-benar digunakan oleh Jet database engine untuk mengoptimalkan query. Ini berarti bahwa Analyzer kinerja dapat memberikan kinerja tips yang lebih spesifik untuk database Anda daripada umum saran yang tercantum di bawah ini di bagian "Tips untuk meningkatkan kinerja permintaan".

Untuk menjalankan Analyzer kinerja di akses 7.0, di Access 97, dalam Access 2000, pada 2002 akses, atau akses 2003, ikuti langkah berikut:

Pada The Alat menu, klik Menganalisis, lalu klik Kinerja.

Tips untuk meningkatkan kinerja permintaan

Untuk meningkatkan kinerja permintaan, mencoba tips ini:
  • Kompak database Anda

    Ketika Anda memadatkan Anda database Anda dapat mempercepat pertanyaan. Ketika Anda memadatkan database Anda, catatan tabel adalah direorganisasi sehingga catatan yang berada di dekat database Halaman yang diperintahkan oleh primary key meja. Hal ini meningkatkan kinerja scan berurutan catatan dalam tabel karena hanya jumlah minimal database halaman sekarang harus dibaca untuk mengambil catatan yang Anda inginkan. Setelah Anda kompak database Anda, jalankan setiap permintaan untuk mengkompilasi permintaan sehingga setiap permintaan sekarang akan memiliki statistik diperbarui pada tabel.
  • Indeks lapangan

    Indeks bidang apapun yang digunakan untuk mengatur kriteria untuk permintaan bidang dan bidang indeks di kedua sisi bergabung. Atau, membuat hubungan antara bidang ini. Ketika Anda membuat hubungan dengan integritas referensial ditegakkan, Jet database engine menciptakan indeks pada kunci asing jika tidak sudah ada. Jika tidak, Jet database engine menggunakan indeks yang ada.

    Catatan Jet database engine secara otomatis mengoptimalkan permintaan yang bergabung meja akses pada hard disk dan ODBC server meja jika akses tabel adalah kecil dan jika bidang bergabung diindeks. Dalam kasus ini, akses meningkatkan kinerja dengan meminta hanya data yang diperlukan dari server. Pastikan bahwa tabel Anda bergabung dari berbagai sumber yang diindeks di bergabung bidang.
  • Pilih jenis data terkecil yang sesuai

    Ketika Anda mendefinisikan sebuah field dalam tabel, pilih terkecil tipe data yang sesuai untuk data di lapangan. Juga, pastikan bahwa bidang yang Anda berencana untuk menggunakan di bergabung memiliki tipe data yang sama atau yang kompatibel tipe data, seperti Autonumber dan nomor (jika FieldSize properti ini diset Bulat panjang).
  • Menambahkan hanya kolom yang harus Anda miliki

    Ketika Anda membuat permintaan, menambahkan hanya kolom yang harus Anda miliki. Dalam bidang yang digunakan untuk menetapkan kriteria, klik untuk mengosongkan Tampilkan kotak centang Jika Anda melakukan tidak ingin menampilkan bidang tersebut.
  • Simpan pernyataan SQL sebagai permintaan

    Jika RecordSource properti untuk bentuk atau untuk laporan diatur untuk pernyataan SQL, Simpan pernyataan SQL sebagai permintaan dan kemudian menetapkan RecordSource properti untuk nama query.
  • Menghindari kolom dihitung

    Menghindari bidang dihitung dalam subqueries. Jika Anda menambahkan permintaan yang berisi bidang dihitung untuk lain permintaan, ekspresi di bidang dihitung dapat memperlambat kinerja di tingkat atas permintaan. Dalam contoh berikut, permintaan Q1 digunakan sebagai masukan untuk permintaan Q2:
    Q1: Pilih IIF([MyColumn]="Yes","Order Confirmed","Order Not Confirmed") AS X dari MyTable;
    P2: Pilih * dari Q1 di mana X = "Order dikonfirmasi";
    Karena JIKA ekspresi pada Q1 tidak dioptimalkan, Q2 juga tidak dapat dioptimalkan. Jika ekspresi yang tidak dapat dioptimalkan bersarang di subquery, semua permintaan tidak dapat dioptimalkan.

    Cara alternatif untuk membangun query adalah sebagai berikut:
    Q1: Pilih * dari MyTable di mana MyColumn = "Ya";
    Jika ekspresi diperlukan dalam output, mencoba untuk menempatkan ekspresi menguasai pada formulir atau laporan. Sebagai contoh, Anda dapat mengubah permintaan sebelumnya untuk parameter permintaan yang meminta nilai MyColumn, dan kemudian berdasarkan bentuk atau laporan query. Pada formulir atau laporan, Anda kemudian dapat menambahkan kontrol dihitung yang menampilkan "Halo" atau "Goodbye" tergantung pada nilai yang ada di MyColumn.

    Membangun query sebagai berikut:
    PARAMETER [untuk melihat dikonfirmasi pesanan, masukkan ya. Untuk melihat belum dikonfirmasi pesanan, masukkan nomor] Teks;
    PILIH *
    DARI MyTable
    Di mana MyColumn = [untuk melihat dikonfirmasi pesanan, masukkan ya. Untuk melihat belum dikonfirmasi pesanan, masukkan nomor];
    Mengendalikan dihitung pada formulir atau laporan, ketik:
    = IIF([MyColumn]="Yes","Order Confirmed","Order Not Confirmed")
  • Menentukan grup oleh

    Ketika Anda mengelompokkan Catatan oleh nilai-nilai bidang bergabung, menentukan grup oleh bidang yang sama dalam satu tabel sebagai kolom yang Anda adalah total (menghitung agregat pada). Untuk misalnya, dalam database contoh Northwind.mdb, jika Anda membuat permintaan yang Total kuantitas bidang dalam urutan rincian meja dan kemudian kelompok oleh NomorPesanan, Anda dapat menentukan grup dengan bidang nomorPesanan dalam rincian pesanan tabel. Jika Anda menetapkan grup oleh untuk bidang nomorPesanan di meja perintah, Akses harus bergabung semua catatan pertama dan kemudian melakukan agregat, sebaliknya melakukan agregat dan kemudian bergabung dengan hanya diperlukan bidang.

    Untuk kecepatan yang lebih besar, menggunakan Group By pada bidang sesedikit mungkin. Atau, menggunakan Pertama fungsi jika Anda bisa.

    Jika permintaan total termasuk join, mempertimbangkan pengelompokan catatan dalam satu permintaan dan kemudian menambahkan query ini untuk memisahkan permintaan yang bergabung. Ketika Anda melakukan ini, kinerja mungkin ditingkatkan dengan beberapa permintaan.
  • Menghindari permintaan ketat kriteria

    Menghindari ketat permintaan kriteria pada bidang dihitung dan non-diindeks bidang jika Anda bisa. Penggunaan kriteria ungkapan yang Anda dapat mengoptimalkan.
  • Tes kinerja permintaan Anda di bidang yang digunakan dalam bergabung antara tabel

    Jika Anda menggunakan kriteria untuk membatasi nilai-nilai di lapangan yang digunakan dalam bergabung antara tabel dengan satu-ke-banyak hubungan, menguji apakah pertanyaan berjalan lebih cepat dengan kriteria yang diletakkan di sisi "satu" atau di sisi "banyak" bergabung. Di beberapa permintaan, Anda mungkin menyadari lebih cepat kinerja dengan menambahkan kriteria untuk bidang sisi "satu" bergabung Alih-alih di "banyak" sisi bergabung.
  • Indeks semacam ladang

    Indeks bidang yang Anda gunakan untuk penyortiran.
  • Menggunakan meja membuat permintaan untuk membuat tabel

    Jika Anda data jarang perubahan, menggunakan meja membuat permintaan untuk membuat tabel dari permintaan Anda hasil. Menggunakan tabel dihasilkan bukan pertanyaan sebagai dasar untuk Anda bentuk, laporan, atau pertanyaan Anda yang lain. Pastikan bahwa Anda menambahkan indeks sesuai dengan pedoman yang Anda baca di artikel ini.
  • Hindari menggunakan domain fungsi agregat

    Hindari menggunakan domain agregat fungsi, seperti DLookup fungsi untuk mengakses data dari tabel yang tidak dalam permintaan. Domain fungsi agregat khusus untuk akses, dan ini berarti bahwa Jet mesin database tidak mengoptimalkan permintaan yang menggunakan domain fungsi agregat. Sebaliknya, menambahkan query tabel yang fungsi mengakses atau membuat subquery.
  • Menggunakan kepala tetap kolom

    Jika Anda membuat crosstab permintaan, penggunaan tetap judul kolom bila memungkinkan.
  • Menggunakan operator

    Penggunaan Antara...Dan operator, Dalam operator, dan = operator di bidang diindeks.
  • Mengoptimalkan kinerja pada server

    Untuk sebagian besar update permintaan terhadap sumber data ODBC, mengoptimalkan kinerja pada server oleh pengaturan FailOnError properti untuk ya.

REFERENSI

Untuk informasi lebih lanjut tentang mengoptimalkan kinerja di Microsoft Access 2000, klik Microsoft akses bantuan padaBantuan menu, jenis mengoptimalkan kinerja di kantor asisten atau jawaban Wizard, dan kemudian klik Mencari untuk melihat topik.
Untuk informasi lebih lanjut tentang cara mengoptimalkan performa di Microsoft akses 2002, klik Microsoft akses bantuan padaBantuan menu, jenis Meningkatkan kinerja akses database di kantor asisten atau jawaban Wizard, dan kemudian klik Mencari untuk melihat topik.

Untuk informasi lebih lanjut tentang meningkatkan kinerja dalam akses 2003, klik Microsoft Office akses bantuan pada Bantuan menu, jenis Meningkatkan kinerja akses database dalam Mencari kotak di panel bantuan, dan kemudian klik Mulai pencarian untuk melihat topik.

Untuk informasi lebih lanjut tentang menggunakan indeks di akses 2000, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
209564ACC2000: Indeks senyawa harus membatasi field diindeks pertama
Note This is a "FAST PUBLISH" article created directly from within the Microsoft support organization. The information contained herein is provided as-is in response to emerging issues. As a result of the speed in making it available, the materials may include typographical errors and may be revised at any time without notice. See Terms of Use for other considerations.

Properti

ID Artikel: 209126 - Kajian Terakhir: 19 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
Kata kunci: 
kbquery kbhowto kbperformance kbinfo kbusage kbmt KB209126 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:209126

Berikan Masukan

 

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