Mẫu dữ liệu truy vấn được tối ưu hóa

Mẫu truy vấn dữ liệu đơn giản và nhanh nhất là:

  1. Một bảng hoặc dạng xem
  2. Được lọc trước trên máy chủ theo những gì bạn cần
  3. Các cột được lập chỉ mục chính xác cho các truy vấn dự kiến

Khi thiết kế ứng dụng của mình, bạn cần suy nghĩ về cách truy vấn dữ liệu một cách nhanh chóng. Cách tốt nhất để truy vấn dữ liệu là sử dụng một bảng hoặc dạng xem có tất cả thông tin bạn cần và lọc thông tin đó trên máy chủ trước khi bạn hiển thị thông tin đó trong ứng dụng của mình. Bạn cũng cần đảm bảo rằng các cột bạn sử dụng để lọc hoặc sắp xếp dữ liệu được lập chỉ mục chính xác. Điều này làm cho ứng dụng của bạn nhanh hơn và mượt mà hơn.

Ví dụ: giả sử bạn có một thư viện hiển thị danh sách khách hàng và nhân viên bán hàng của họ. Nếu lưu trữ thông tin khách hàng và nhân viên bán hàng trong các bảng riêng biệt, bạn cần sử dụng tính năng tra cứu để lấy tên nhân viên bán hàng cho từng khách hàng. Điều này làm chậm ứng dụng của bạn vì nó cần chạy nhiều truy vấn đến bảng khác. Cách tốt hơn là tạo chế độ xem kết hợp thông tin khách hàng và nhân viên bán hàng trong một bảng và sử dụng chế độ xem đó làm nguồn dữ liệu cho thư viện của bạn. Sau đó, ứng dụng của bạn chỉ cần chạy một truy vấn để có được tất cả dữ liệu cần thiết.

Có sự cân bằng giữa tốc độ truy vấn và chuẩn hóa dữ liệu. Chuẩn hóa dữ liệu có nghĩa là bạn chỉ lưu trữ dữ liệu một lần và tránh trùng lặp. Điều này giúp giữ cho dữ liệu nhất quán và chính xác. Tuy nhiên, đôi khi bạn cần sao chép một số dữ liệu để truy vấn nhanh hơn và dễ dàng hơn. Bạn cần cân bằng hai mục tiêu này trong thiết kế ứng dụng và cấu trúc bảng của mình. Nếu không, ứng dụng của bạn sẽ chậm và lag vì nó cần thực hiện nhiều công việc để lọc và nối dữ liệu từ các bảng khác nhau.

Sử dụng chế độ xem phía máy chủ

Lượt xem có lẽ là công cụ phổ biến nhất giúp cân bằng các mục tiêu này. Chúng trình bày một cấu trúc bảng duy nhất cho các truy vấn, lọc trước dữ liệu cho những gì bạn cần trong truy vấn, đồng thời cho phép tra cứu và kết hợp với các bảng khác. Vì các bộ lọc, tra cứu và kết nối cho dạng xem được tính toán trên máy chủ nên cả tải trọng và tính toán phía máy khách đều được giảm thiểu.

Thư viện có thể hiển thị nhiều bản ghi từ nguồn dữ liệu. Nhưng đôi khi, bạn cần hiển thị thông tin bổ sung từ nguồn dữ liệu khác có liên quan đến thông tin gốc. Ví dụ: bạn có một thư viện hiển thị danh sách khách hàng và bạn muốn hiển thị tên của nhân viên bán hàng được chỉ định cho từng khách hàng. Tên nhân viên bán hàng được lưu trong nguồn dữ liệu khác với thông tin của khách hàng. Để hiển thị tên nhân viên bán hàng, bạn cần sử dụng chức năng tra cứu để tìm bản ghi trùng khớp trong nguồn dữ liệu khác. Điều này mở rộng bảng gốc với các giá trị tra cứu.

Tuy nhiên, việc mở rộng bảng có thể rất chậm nếu bạn có nhiều bản ghi và nhiều lần tra cứu. Đối với mỗi bản ghi trong thư viện, ứng dụng cần chạy một truy vấn riêng cho nguồn dữ liệu khác và nhận giá trị tra cứu. Điều này có nghĩa là ứng dụng có thể cần chạy nhiều truy vấn cho mỗi bản ghi, việc này có thể mất nhiều thời gian và ảnh hưởng đến hiệu suất ứng dụng. Kiểu phản đối này đôi khi được gọi là vấn đề "N bình phương, (n^2)" hoặc vấn đề "N+1".

Sử dụng StartsWith hoặc Filter

Power Fx cung cấp một số cách để tìm kiếm dữ liệu. Nói chung, hãy sử dụng biểu thức tận dụng chỉ mục như StartsWith hoặc Filter thay vì biểu thức đọc toàn bộ bảng thích Trong. Toán tử In phù hợp với các bộ sưu tập trong bộ nhớ hoặc nếu bảng nguồn dữ liệu bên ngoài rất nhỏ.

Xem xét việc sao chép dữ liệu

Đôi khi dữ liệu truy cập chậm trong một truy vấn vì nó được lưu trữ ở một vị trí hoặc định dạng khác. Để thực hiện truy vấn nhanh hơn, bạn có thể sao chép dữ liệu chậm và lưu trữ cục bộ trong một bảng truy vấn nhanh và dễ dàng. Tuy nhiên, điều này có nghĩa là dữ liệu cục bộ có thể không phải là phiên bản cập nhật nhất của dữ liệu gốc. Sau đó chạy một quy trình khác để cập nhật dữ liệu cục bộ theo định kỳ. Quá trình này có thể là một Power Automate luồng, một plugin, một thủ tục được lưu trữ hoặc bất kỳ phương thức nào khác có thể di chuyển dữ liệu từ nơi này sang nơi khác.

Yêu cầu tần suất cập nhật dữ liệu cục bộ tùy thuộc vào nhu cầu kinh doanh của bạn. Dữ liệu cần mới cho ứng dụng của bạn đến mức nào? Ví dụ: giả sử bạn làm việc cho Contoso, một công ty bán xe đạp. Danh sách xe đạp có sẵn được lưu trữ trong cơ sở dữ liệu Sản phẩm mà bạn có thể truy cập thông qua API trong trình kết nối tùy chỉnh. Tuy nhiên, giả sử lệnh gọi API chậm nên bạn quyết định sao chép dữ liệu sản phẩm và lưu trữ cục bộ trong một bảng. Sau đó, bạn tạo chế độ xem kết hợp bảng với dữ liệu liên quan khác cho ứng dụng của mình. Bạn cũng tạo một quy trình Power Automate chạy hàng ngày và cập nhật dữ liệu sản phẩm mới nhất từ ​​API vào bảng của mình. Sau đó, ứng dụng của bạn có thể truy vấn dữ liệu cục bộ nhanh hơn và dữ liệu chỉ mới tồn tại tối đa một ngày.

Sao chép dữ liệu là một loại kỹ thuật phổ biến trong các ứng dụng cấp doanh nghiệp để đảm bảo hiệu suất tốt. Bạn có thể sử dụng Dataverse plugin, quy trình được lưu trữ hoặc di chuyển dữ liệu để sao chép dữ liệu vào một bảng duy nhất được tối ưu hóa cho truy vấn. Câu hỏi quan trọng là: dữ liệu này phải được cập nhật như thế nào? Nếu có đủ khả năng trì hoãn, bạn có thể sử dụng kỹ thuật này để tăng tốc ứng dụng của mình.

Gợi ý

Để đạt được mục tiêu này, hãy xem xét các câu hỏi và đề xuất sau:

  1. Việc khách hàng xem giá trị dữ liệu trong thư viện hoặc lưới dữ liệu quan trọng như thế nào? Việc chọn một bản ghi trước rồi hiển thị dữ liệu dưới dạng biểu mẫu có được chấp nhận không?
  2. Chế độ xem có thể thực hiện các công việc cần thiết trước để xem dữ liệu ở định dạng phù hợp không?
  3. Bạn có đang sử dụng toán tử "IN" trong đó "StartsWith" sẽ hoạt động không?
  4. Dữ liệu của bạn cần cập nhật đến mức nào? Có chiến lược sao chép dữ liệu nào bạn có thể sử dụng để truy vấn của mình hoạt động trên một bảng theo mặc định không?