Corak data pertanyaan yang dioptimumkan

Corak pertanyaan data yang paling mudah dan terpantas ialah:

  1. Jadual atau pandangan tunggal
  2. Diprafiltered pada pelayan kepada apa yang anda perlukan
  3. Lajur diindeks dengan betul untuk pertanyaan yang dijangkakan

Apabila anda mereka bentuk aplikasi anda, anda perlu memikirkan cara untuk menanyakan data dengan cepat. Cara terbaik untuk bertanya data adalah dengan menggunakan satu jadual atau pandangan yang mempunyai semua maklumat yang anda perlukan dan menapisnya pada pelayan sebelum anda memaparkannya dalam aplikasi anda. Anda juga perlu memastikan lajur yang anda gunakan untuk menapis atau mengisih data diindeks dengan betul. Ini menjadikan apl anda lebih pantas dan lancar.

Contohnya, katakan anda mempunyai galeri yang menunjukkan senarai pelanggan dan jurujual mereka. Jika anda menyimpan maklumat pelanggan dan jurujual dalam jadual berasingan, anda perlu menggunakan carian untuk mendapatkan nama jurujual untuk setiap pelanggan. Ini melambatkan apl anda kerana ia perlu menjalankan banyak pertanyaan ke jadual lain. Cara yang lebih baik ialah mencipta pandangan yang menggabungkan maklumat pelanggan dan jurujual dalam satu jadual dan menggunakan pandangan itu sebagai sumber data galeri anda. Kemudian apl anda hanya perlu menjalankan satu pertanyaan untuk mendapatkan semua data yang diperlukan.

Terdapat pertukaran antara kelajuan pertanyaan dan normalisasi data. Normalisasi data bermaksud bahawa anda menyimpan data sekali sahaja, dan mengelakkan pertindihan. Ini membantu memastikan data konsisten dan tepat. Walau bagaimanapun, kadang-kadang anda perlu menduplikasi beberapa data untuk membuat pertanyaan lebih cepat dan lebih mudah. Anda perlu mengimbangi dua matlamat ini dalam reka bentuk aplikasi dan struktur jadual anda. Jika tidak, apl anda akan menjadi perlahan dan ketinggalan kerana ia perlu melakukan banyak kerja untuk menapis dan menyertai data daripada jadual yang berbeza.

Menggunakan pandangan pihak pelayan

Pandangan mungkin merupakan alat yang paling biasa untuk membantu mengimbangi matlamat ini. Mereka mempersembahkan struktur jadual tunggal untuk pertanyaan, menapis data untuk perkara yang anda perlukan dalam pertanyaan dan mendayakan carian dan menyertai jadual lain. Oleh kerana penapis, carian dan cantuman untuk pandangan dikira pada pelayan, kedua-dua muatan dan pengkomputeran pihak klien diminimumkan.

Galeri boleh memaparkan banyak rekod dari sumber data. Tetapi kadang-kadang, anda perlu menunjukkan maklumat tambahan dari sumber data lain yang berkaitan dengan yang asal. Sebagai contoh, anda mempunyai galeri yang menunjukkan senarai pelanggan, dan anda ingin menunjukkan nama jurujual yang ditugaskan kepada setiap pelanggan. Nama jurujual disimpan dalam sumber data yang berbeza daripada maklumat pelanggan. Untuk menunjukkan nama jurujual, anda perlu menggunakan fungsi carian yang mencari rekod yang sepadan dalam sumber data yang lain. Ini mengembangkan jadual asal dengan nilai carian.

Walau bagaimanapun, mengembangkan jadual boleh menjadi sangat perlahan jika anda mempunyai banyak rekod dan banyak carian. Untuk setiap rekod dalam galeri, aplikasi perlu menjalankan pertanyaan berasingan kepada sumber data yang lain dan mendapatkan nilai carian. Ini bermakna apl mungkin perlu menjalankan banyak pertanyaan untuk setiap rekod, yang boleh mengambil masa yang lama dan menjejaskan prestasi apl. Corak anti ini kadang-kadang dikenali sebagai "N kuasa dua, (n^2)" atau masalah "N+1".

Gunakan StartsWith atau Tapis

Power Fx menyediakan beberapa cara untuk mencari data. Secara umum, gunakan ungkapan yang memanfaatkan indeks seperti StartsWith atau Filter dan bukannya ungkapan yang membaca keseluruhan jadual seperti Dalam. Pengendali Dalam adalah baik untuk koleksi dalam memori atau jika jadual sumber data luaran sangat kecil.

Pertimbangkan data pendua

Kadangkala data lambat dicapai dalam pertanyaan kerana ia disimpan dalam lokasi atau format yang berbeza. Untuk menjadikan pertanyaan lebih pantas, anda boleh menyalin data perlahan dan menyimpannya secara setempat dalam jadual yang pantas dan mudah ditanya. Walau bagaimanapun, ini bermakna bahawa data tempatan mungkin bukan versi data asal yang paling dikemas kini. Kemudian jalankan proses lain untuk mengemas kini data tempatan secara berkala. Proses ini boleh menjadi Power Automate aliran, plugin, prosedur yang disimpan, atau kaedah lain yang boleh memindahkan data dari satu tempat ke tempat lain.

Keperluan kekerapan mengemas kini data setempat bergantung pada keperluan perniagaan anda. Sejauh manakah data segar diperlukan untuk apl anda? Sebagai contoh, katakan anda bekerja untuk Contoso, sebuah syarikat yang menjual basikal. Senarai basikal yang tersedia disimpan dalam pangkalan data Produk yang boleh anda akses melalui API dalam penyambung tersuai. Tetapi katakan panggilan API lambat, jadi anda memutuskan untuk menyalin data produk dan menyimpannya secara setempat dalam jadual. Kemudian anda mencipta pandangan yang menggabungkan jadual anda dengan data lain yang berkaitan untuk apl anda. Anda juga mencipta Power Automate aliran yang berjalan setiap hari dan mengemas kini jadual anda dengan data produk terkini daripada API. Kemudian apl anda boleh menanyakan data setempat dengan lebih cepat dan data hanya berusia satu hari paling banyak.

Menduplikasi data adalah jenis teknik biasa dalam aplikasi gred perusahaan untuk memastikan prestasi yang baik. Anda boleh menggunakan Dataverse pemalam, prosedur yang disimpan atau pergerakan data untuk menduplikasi data ke dalam jadual tunggal yang dioptimumkan untuk pertanyaan. Persoalan utama ialah: sejauh manakah data ini mesti dikemas kini? Sekiranya anda mengalami kelewatan, anda boleh menggunakan teknik ini untuk mempercepatkan aplikasi anda.

Cadangan

Untuk mencapai matlamat ini, pertimbangkan soalan dan cadangan berikut:

  1. Betapa pentingnya bagi pelanggan untuk melihat nilai data dalam galeri atau grid data? Adakah ia boleh diterima untuk memilih rekod terlebih dahulu dan kemudian menunjukkan data dalam borang?
  2. Bolehkah pandangan melakukan prakerja yang diperlukan untuk melihat data dalam format yang betul?
  3. Adakah anda menggunakan pengendali "IN" di mana "StartsWith" akan berfungsi?
  4. Seberapa terkini data anda perlu? Adakah terdapat strategi pertindihan data yang anda boleh gunakan untuk membolehkan pertanyaan anda berfungsi dalam satu jadual secara lalai?