Các phiên bản sau này của SQL (2005+) có vẻ tốt hơn trong việc tối ưu hóa việc sử dụng các khung nhìn. Lượt xem là tốt nhất để củng cố các quy tắc kinh doanh. EG: nơi tôi làm việc, chúng tôi có một cơ sở dữ liệu sản phẩm viễn thông. Mỗi sản phẩm được gán cho một kế hoạch tỷ lệ và kế hoạch tỷ lệ đó có thể được hoán đổi và tỷ lệ trên kế hoạch tỷ lệ có thể được kích hoạt / hủy kích hoạt khi tỷ lệ được tăng hoặc sửa đổi.
Để làm cho nó dễ dàng, chúng ta có thể làm cho các khung nhìn lồng nhau. Chế độ xem thứ nhất chỉ tham gia các tỷ lệ theo tỷ lệ của chúng bằng cách sử dụng bất kỳ bảng nào là cần thiết và trả lại bất kỳ dữ liệu cần thiết nào mà các mức xem tiếp theo sẽ cần. (Các) chế độ xem thứ 2 chỉ có thể cách ly các tỷ lệ hoạt động và tỷ lệ hoạt động của chúng. Hoặc, chỉ là giá khách hàng. Hoặc giá nhân viên (để giảm giá nhân viên). Hoặc kinh doanh so với tỷ lệ khách hàng dân cư. (tỷ lệ có thể nhận được phức tạp). Vấn đề là, khung nhìn nền tảng đảm bảo logic kinh doanh tổng thể của chúng tôi cho các tỷ lệ và tỷ lệ được kết hợp với nhau đúng cách tại một địa điểm. Lớp quan điểm tiếp theo giúp chúng tôi tập trung hơn vào các tỷ lệ cụ thể (loại, hoạt động / không hoạt động, v.v.).
Tôi đồng ý rằng các chế độ xem có thể khiến việc gỡ lỗi trở nên lộn xộn nếu bạn xây dựng các truy vấn và chế độ xem cùng một lúc. Nhưng, nếu bạn đang sử dụng chế độ xem đáng tin cậy, nó sẽ giúp việc gỡ lỗi dễ dàng hơn. Bạn biết rằng chế độ xem đã được thông qua người rung chuông, vì vậy bạn biết rằng rất có thể nó không gây ra vấn đề.
Các vấn đề có thể đến với quan điểm của bạn, mặc dù. "nếu một sản phẩm chỉ liên quan đến kế hoạch tỷ lệ không hoạt động thì sao?" hoặc "nếu tỷ lệ chỉ có tỷ lệ không hoạt động trên đó thì sao?" Chà, điều đó có thể bị bắt ở cấp độ đầu với logic bắt lỗi người dùng. "Lỗi, sản phẩm nằm trong kế hoạch tỷ lệ không hoạt động ... vui lòng sửa". Chúng tôi cũng có thể chạy kiểm tra truy vấn để kiểm tra lại trước khi chạy hóa đơn. (chọn tất cả các gói và rời khỏi tham gia vào chế độ xem tỷ lệ hoạt động, chỉ trả lại các gói không nhận được kế hoạch tỷ lệ hoạt động vì các vấn đề cần được giải quyết).
Điểm hay của việc này là các chế độ xem cho phép bạn ngưng tụ rất nhiều truy vấn để báo cáo, thanh toán, v.v. Bạn có thể có chế độ xem tài khoản khách hàng, sau đó là chế độ xem cấp 2 chỉ dành cho khách hàng đang hoạt động. Đội ngũ với một cái nhìn của địa chỉ khách hàng. Nhóm có quan điểm về (các) sản phẩm (đã tham gia vào những sản phẩm mà khách hàng có). Đội ngũ để xem kế hoạch tỷ lệ sản phẩm. Đội ngũ với quan điểm của các tính năng sản phẩm. Xem, xem, xem, từng thử-n-sai để đảm bảo tính toàn vẹn. Truy vấn cuối của bạn bằng cách sử dụng các khung nhìn là rất nhỏ gọn.
biên tập:
Như một ví dụ về cách xem sẽ tốt hơn so với chỉ một truy vấn phẳng của các bảng ... chúng tôi đã có một nhà thầu tạm thời đến để thực hiện một số thay đổi. Họ nói với anh ta có quan điểm cho mọi thứ, nhưng anh ta quyết định làm phẳng tất cả các truy vấn của mình. Thanh toán đã loại bỏ một số truy vấn của anh ấy. Họ tiếp tục nhận được nhiều tỷ lệ và tỷ lệ trên mọi thứ. Hóa ra các truy vấn của anh ta thiếu các tiêu chí để chỉ cho phép tỷ lệ hóa đơn nếu chúng nằm trong khoảng thời gian từ ngày bắt đầu và ngày kết thúc, kế hoạch giá được cho là sử dụng tỷ lệ đó / trong thời gian đó. Úi. Nếu anh ta đã sử dụng khung nhìn, thì nó đã tính đến logic đó.
Về cơ bản, bạn phải cân nhắc hiệu suất so với sự tỉnh táo. Có lẽ bạn có thể làm tất cả các loại công cụ ưa thích để tăng hiệu suất của cơ sở dữ liệu. Nhưng, nếu điều đó có nghĩa là đó là một cơn ác mộng đối với một người mới tiếp quản / duy trì, nó có thực sự xứng đáng không? Có thực sự đáng để anh chàng mới phải chơi whack-a-mol phải tìm tất cả các truy vấn cần thay đổi logic của họ (và có nguy cơ anh ta quên / ngón tay mập của họ) b / c ai đó quyết định quan điểm là "xấu" và không hợp nhất một số logic kinh doanh cốt lõi thành một logic có thể được sử dụng trong 100 truy vấn khác? Điều đó thực sự phụ thuộc vào doanh nghiệp của bạn và nhóm IT / IS / DB của bạn. Nhưng, tôi thích sự rõ ràng và hợp nhất nguồn đơn hơn hiệu suất.