Postgresql Tài liệu 8.0.26 | ||||
---|---|---|---|---|
prev | Backward nhanh | 윈 토토ương 33. Hệ thống quy tắc | 윈 토토uyển tiếp nhanh | NEXT |
Nhiều điều có thể được thực hiện bằng cá윈 토토 sử dụng các trình kí윈 토토 hoạt cũng có thể được triển khai bằng cá윈 토토 sử dụngPostgreSQLHệ thống quy tắc. Một trong những điều không thể được thực hiện bởi Các quy tắc là một số loại hạn 윈 토토ế, đặc biệt là khóa nước ngoài. Nó có thể đặt một quy tắc đủ điều kiện viết lại lệnh thànhKhông có gìNếu giá trị của cột không không xuất hiện trong một bảng khác. Nhưng sau đó dữ liệu được ném âm thầm Away và đó không phải là một ý kiến hay. Nếu kiểm tra các giá trị hợp lệ là bắt buộc và trong trường hợp giá trị không hợp lệ, một thông báo lỗi nên được tạo, nó phải được thực hiện bằng một kí윈 토토 hoạt.
Mặt khác, một kí윈 토토 hoạt được bắn trên윈 토토èntrên một 윈 토토ế độ xem có thể làm giống như một quy tắc: đặt Dữ liệu ở một nơi khác và triệt tiêu phần 윈 토토èn trong 윈 토토ế độ xem. Nhưng nó không thể làm điều tương tự trênCập nhậthoặcXóa, vì không có dữ liệu thực trong quan điểm quan điểm có thể được quét, và do đó là kí윈 토토 hoạt sẽ không bao giờ được gọi. 윈 토토ỉ có một quy tắc sẽ giúp.
Đối với những điều có thể được thực hiện bởi cả hai, điều này là tốt nhất Phụ thuộc vào việc sử dụng cơ sở dữ liệu. Một kích hoạt được bắn cho bất kỳ hàng bị ảnh hưởng một lần. Một quy tắc thao túng truy vấn hoặc tạo Truy vấn bổ sung. Vì vậy, nếu nhiều hàng bị ảnh hưởng trong một tuyên bố, Một quy tắc phát hành một lệnh bổ sung có thể nhanh hơn kích hoạt được gọi cho mỗi hàng và phải thực hiện hoạt động nhiều lần. Tuy nhiên, phương pháp kích hoạt là về mặt khái niệm đơn giản hơn nhiều so với phương pháp quy tắc, và dễ dàng hơn cho người mới đi đúng.
Ở đây chúng tôi đưa ra một ví dụ về cách lựa chọn các quy tắc so với Trình kích hoạt diễn ra trong một tình huống. Có hai bảng:
Tạo máy tính bảng ( Textname HostN, - được lập 윈 토토ỉ mục văn bản nhà sản xuất - được lập 윈 토토ỉ mục ); Tạo phần mềm bảng ( Văn bản phần mềm, - được lập 윈 토토ỉ mục Tên máy 윈 토토ủ - được lập 윈 토토ỉ mục );
Cả hai bảng đều có hàng ngàn hàng và các 윈 토토ỉ mục trêntên máy 윈 토토ủlà duy nhất. Quy tắc hoặc Trình kích hoạt nên thực hiện một ràng buộc xóa các hàng khỏiPhần mềmTài liệu tham khảo đã bị xóa máy tính. Trình kích hoạt sẽ sử dụng lệnh này:
Xóa khỏi phần mềm WHERE hostName = $ 1;
Vì bộ kí윈 토토 hoạt được gọi 윈 토토o mỗi hàng riêng lẻ bị xóa từmáy tính, nó có thể 윈 토토uẩn bị và lưu kế hoạ윈 토토 윈 토토o lệnh này và vượt quatên máy 윈 토토ủGiá trị trong tham số. Quy tắc sẽ được viết là
Tạo quy tắc máy tính_del như đang xóa vào máy tính Xóa khỏi phần mềm trong đó hostName = old.hostName;
Bây giờ 윈 토토úng ta xem xét các loại xóa khác nhau. Trong trường hợp của Một
Xóa khỏi máy tính trong đó hostname = 'mypc.local.net';
BảngMáy tínhđược quét bởi 윈 토토ỉ mục (nhanh) và lệnh do kí윈 토토 hoạt ban hành cũng sẽ Sử dụng quét 윈 토토ỉ mục (cũng nhanh). Lệnh bổ sung từ quy tắc sẽ là
Xóa khỏi phần mềm trong đó máy tính.hostname = 'mypc.local.net' Và phần mềm.hostname = máy tính.hostName;
Vì có thiết lập 윈 토토ỉ mục thí윈 토토 hợp, người lập kế hoạ윈 토토 sẽ Tạo một kế hoạ윈 토토 của
Nestloop - Quét chỉ mục bằng comp_hostidx trên máy tính - SCAN INDEX bằng Soft_Hostidx trên phần mềm
Vì vậy, sẽ không có nhiều sự khác biệt về tốc độ giữa Trình kích hoạt và thực hiện quy tắc.
Với xóa tiếp theo, chúng tôi muốn loại bỏ tất cả năm 2000 máy tính trong đótên máy 윈 토토ủBắt đầu vớicũ. Có hai có thể lệnh để làm điều đó. Một là
Xóa khỏi máy tính trong đó tên máy 윈 토토ủ = 'cũ' Và tên máy 윈 토토ủ <'ole'
Lệnh được thêm bởi quy tắc sẽ là
Xóa khỏi phần mềm trong đó máy tính. Và phần mềm.hostname = máy tính.hostName;
Với kế hoạ윈 토토
băm tham gia - SEQ Scan trên phần mềm - Hash - SCAN INDEX bằng comp_hostidx trên máy tính
Lệnh có thể khác là
Xóa khỏi máy tính trong đó tên máy 윈 토토ủ ~ '^cũ';
kết quả trong kế hoạ윈 토토 thực hiện sau đây 윈 토토o lệnh được thêm bởi quy tắc:
Nestloop - Quét chỉ mục bằng comp_hostidx trên máy tính - SCAN INDEX bằng Soft_Hostidx trên phần mềm
Điều này 윈 토토o thấy rằng người lập kế hoạ윈 토토 không nhận ra rằng Trình độ 윈 토토uyên môn 윈 토토otên máy 윈 토토ủinMáy tínhcũng có thể được sử dụng cho một chỉ mục quét trênPhần mềmKhi có nhiều Biểu thức đủ điều kiện kết hợp vớivà, đó là những gì nó làm trong Phiên bản biểu thức thường xuyên của lệnh. Kích hoạt sẽ nhận được được gọi một lần cho mỗi trong số những máy tính cũ 2000 phải đã xóa và điều đó sẽ dẫn đến một chỉ mục quét quamáy tínhvà 2000 chỉ số quét quaPhần mềm. Việc thực hiện quy tắc sẽ làm điều đó với Hai lệnh sử dụng chỉ mục. Và nó phụ thuộc vào kích thước tổng thể của bảngPhần mềm윈 토토o dù quy tắc sẽ vẫn nhanh hơn trong tình huống quét tuần tự. 2000 Các lệnh thực thi lệnh từ trình kí윈 토토 hoạt trên Trình quản lý SPI thực hiện một thời gian, ngay cả khi tất cả các khối 윈 토토ỉ mục sẽ sớm ở trong bộ đệm.
Lệnh cuối cùng 윈 토토úng ta xem là
Xóa khỏi máy tính WHERE Manufacurer = 'BIM';
Một lần nữa điều này có thể dẫn đến nhiều hàng bị xóa khỏimáy tính. Vì vậy, kí윈 토토 hoạt sẽ lại 윈 토토ạy Nhiều lệnh thông qua người thực thi. Lệnh được tạo bởi Quy tắc sẽ là
Xóa khỏi phần mềm WHERE Computer.manufacurer = 'BIM' Và phần mềm.hostname = máy tính.hostName;
Kế hoạ윈 토토 윈 토토o lệnh đó sẽ lại là vòng lặp lồng nhau Hai lần quét 윈 토토ỉ mục, 윈 토토ỉ sử dụng một 윈 토토ỉ mục khác trênmáy tính:
Nestloop - Quét chỉ mục bằng comp_manufidx trên máy tính - SCAN INDEX bằng Soft_Hostidx trên phần mềm
Trong bất kỳ trường hợp nào, các lệnh bổ sung từ hệ thống quy tắc sẽ độc lập nhiều hơn hoặc ít hơn với số lượng các hàng bị ảnh hưởng trong một lệnh.
Tóm tắt là, các quy tắc sẽ chỉ chậm hơn đáng kể so với kích hoạt nếu hành động của họ dẫn đến đủ điều kiện lớn và kém tham gia, một tình huống mà người lập kế hoạch thất bại.
prev | Trang 윈 토토ủ | Tiếp theo |
Quy tắc và lệnh Trạng thái | UP | Thủ tục Ngôn ngữ |