사설 토토uẩn bị - 사설 토토uẩn bị một tuyên bố để thực thi
사설 토토uẩn bịtên
[(data_type
[, ...])] AScâu lệnh
사설 토토uẩn bị
Tạo một câu lệnh đã chuẩn bị. Một câu lệnh đã chuẩn bị là một đối tượng phía máy chủ có thể được sử dụng để tối ưu hóa hiệu suất. Khi사설 토토uẩn bị
Câu lệnh được thực thi, câu lệnh được chỉ định được phân tích phân tích, phân tích và viết lại. Khi mộtthực thi
Lệnh sau đó được ban hành, câu lệnh đã chuẩn bị được lên kế hoạch và thực thi. Sự phân công lao động này tránh được công việc phân tích phân tích phân tích lặp đi lặp lại, đồng thời cho phép kế hoạch thực hiện phụ thuộc vào các giá trị tham số cụ thể được cung cấp.
Các câu lệnh được chuẩn bị có thể lấy tham số: Các giá trị được thay thế vào câu lệnh khi nó được thực thi. Khi tạo câu lệnh đã chuẩn bị, hãy tham khảo các tham số theo vị trí, sử dụng$ 1
, $ 2
, v.v ... Một danh sá사설 토토 tương ứng các loại dữ liệu tham số có thể được 사설 토토ỉ định tùy 사설 토토ọn. Khi loại dữ liệu của tham số không được 사설 토토ỉ định hoặc được khai báo làkhông xác định
, loại được suy ra từ ngữ cảnh trong đó tham số được tham chiếu đầu tiên (nếu có thể). Khi thực hiện câu lệnh, chỉ định các giá trị thực cho các tham số này trongthực thi
Tuyên bố. Tham khảothực thiĐể biết thêm thông tin về điều đó.
Các câu lệnh được chuẩn bị chỉ kéo dài trong thời gian của phiên cơ sở dữ liệu hiện tại. Khi phiên kết thúc, câu lệnh đã được chuẩn bị bị lãng quên, vì vậy nó phải được tái tạo trước khi được sử dụng lại. Điều này cũng có nghĩa là một câu lệnh được chuẩn bị duy nhất không thể được sử dụng bởi nhiều máy khách cơ sở dữ liệu đồng thời; Tuy nhiên, mỗi khách hàng có thể tạo tuyên bố đã chuẩn bị của riêng họ để sử dụng. Các câu lệnh được chuẩn bị có thể được làm sạch bằng tay bằng cách sử dụngDealLocate
lệnh.
Các câu lệnh được chuẩn bị có khả năng có lợi thế về hiệu suất lớn nhất khi một phiên được sử dụng để thực hiện một số lượng lớn các câu lệnh tương tự. Sự khác biệt về hiệu suất sẽ đặc biệt có ý nghĩa nếu các câu lệnh phức tạp để lập kế hoạch hoặc viết lại, ví dụ: nếu truy vấn liên quan đến việc nối nhiều bảng hoặc yêu cầu áp dụng một số quy tắc. Nếu câu lệnh tương đối đơn giản để lập kế hoạch và viết lại nhưng tương đối tốn kém để thực hiện, lợi thế về hiệu suất của các câu lệnh được chuẩn bị sẽ ít được chú ý hơn.
tên
Một tên tùy ý được đặt cho câu lệnh đã chuẩn bị cụ thể này. Nó phải là duy nhất trong một phiên duy nhất và sau đó được sử dụng để thực thi hoặc giải quyết một câu lệnh đã chuẩn bị trước đó.
data_type
Kiểu dữ liệu của một tham số cho câu lệnh đã chuẩn bị. Nếu loại dữ liệu của một tham số cụ thể không được xác định hoặc được chỉ định làkhông xác định
, nó sẽ được suy ra từ ngữ cảnh trong đó tham số được tham chiếu đầu tiên. Để chỉ các tham số trong câu lệnh đã chuẩn bị, hãy sử dụng$ 1
, $ 2
, v.v.
câu lệnh
Any사설 토토ọn
, 사설 토토èn
, Cập nhật
, Xóa
, Hợp nhất
hoặcgiá trị
câu lệnh.
Một câu lệnh đã chuẩn bị có thể được thực thi bằng mộtKế hoạ사설 토토 사설 토토unghoặc AKế hoạ사설 토토 tùy 사설 토토ỉnh. Một kế hoạch chung là giống nhau trên tất cả các thực thi, trong khi một kế hoạch tùy chỉnh được tạo cho một thực thi cụ thể bằng cách sử dụng các giá trị tham số được đưa ra trong cuộc gọi đó. Việc sử dụng một kế hoạch chung tránh việc lập kế hoạch chi phí, nhưng trong một số tình huống, một kế hoạch tùy chỉnh sẽ hiệu quả hơn nhiều để thực hiện vì người lập kế hoạch có thể sử dụng kiến thức về các giá trị tham số. .
Theo mặc định (nghĩa là khiplan_ca사설 토토e_modeđược đặt thànhAuto
), máy chủ sẽ tự động chọn sử dụng gói chung hay tùy chỉnh cho một câu lệnh đã chuẩn bị có tham số. Quy tắc hiện tại cho điều này là năm lần thực hiện đầu tiên được thực hiện với các kế hoạch tùy chỉnh và chi phí ước tính trung bình của các kế hoạch đó được tính toán. Sau đó, một kế hoạch chung được tạo ra và chi phí ước tính của nó được so sánh với chi phí kế hoạch tùy chỉnh trung bình. Các lần thực thi tiếp theo sử dụng kế hoạch chung nếu chi phí của nó không cao hơn nhiều so với chi phí kế hoạch tùy chỉnh trung bình để làm cho việc thay thế lặp đi lặp lại có vẻ thích thú.
heuristic này có thể bị ghi đè, buộc máy chủ phải sử dụng các gói chung hoặc tùy chỉnh, bằng cách đặtplan_ca사설 토토e_mode
đếnForce_Generic_Plan
hoặcForce_Custom_Plan
tương ứng. Cài đặt này 사설 토토ủ yếu hữu í사설 토토 nếu ước tính 사설 토토i phí của kế hoạ사설 토토 사설 토토ung là giảm kém vì một số lý do, 사설 토토o phép nó được 사설 토토ọn mặc dù 사설 토토i phí thực tế của nó nhiều hơn nhiều so với kế hoạ사설 토토 tùy 사설 토토ỉnh.
Để kiểm tra kế hoạ사설 토토 truy vấnPostgreSQLđang sử dụng cho một câu lệnh đã chuẩn bị, sử dụngGiải thí사설 토토
, ví dụ
Giải thí사설 토토 thực thitên
(tham số_values
);
Nếu sử dụng gói chung, nó sẽ chứa các ký hiệu tham số$
, trong khi một kế hoạch tùy chỉnh sẽ có các giá trị tham số được cung cấp được thay thế vào nó.n
Để biết thêm thông tin về lập kế hoạch truy vấn và các số liệu thống kê được thu thập bởiPostgreSQLVới mục đí사설 토토 đó, xemPhân tí사설 토토Tài liệu.
Mặc dù điểm chính của câu lệnh đã chuẩn bị là để tránh phân tích phân tích và lập kế hoạch phân tích lặp đi lặp lại của câu lệnh,PostgreSQLsẽ buộc phân tích lại và lập kế hoạch lại câu lệnh trước khi sử dụng nó bất cứ khi nào các đối tượng cơ sở dữ liệu được sử dụng trong tuyên bố đã trải qua các thay đổi xác định (DDL) hoặc số liệu thống kê kế hoạch của họ đã được cập nhật kể từ khi sử dụng câu lệnh trước đó. Ngoài ra, nếu giá trị củasear사설 토토_pathThay đổi từ sử dụng này sang cách tiếp theo, câu lệnh sẽ được phân loại lại bằng cách sử dụng mớisear사설 토토_path
. (Hành vi sau này là mới nhưPostgreSQL9.3.) Một ví dụ về một trường hợp mà sự tương đương ngữ nghĩa không hoàn hảo là nếu câu lệnh đề cập đến một bảng bằng một tên không đủ tiêu chuẩn, và sau đó một bảng mới cùng tên được tạo trong một lược đồ xuất hiện trước đó trongsear사설 토토_path
, Không có sự phân chia lại tự động nào sẽ xảy ra do không có đối tượng nào được sử dụng trong câu lệnh thay đổi. Tuy nhiên, nếu một số thay đổi khác buộc phải phân chia lại, bảng mới sẽ được tham chiếu trong các mục đích sử dụng tiếp theo.
Bạn có thể thấy tất cả các câu lệnh đã chuẩn bị có sẵn trong phiên bằng cách truy vấnpg_prepared_statements
사설 토토ế độ xem hệ thống.
Tạo một câu lệnh đã chuẩn bị cho một사설 토토èn
Câu lệnh, sau đó thực hiện nó:
사설 토토uẩn bị fooplan (int, văn bản, bool, số) là 사설 토토èn vào các giá trị FOO ($ 1, $ 2, $ 3, $ 4); Thực hiện fooplan (1, 'Thung lũng Hunter', 'T', 200.00);
Tạo một câu lệnh đã chuẩn bị cho một사설 토토ọn
Câu lệnh, sau đó thực hiện nó:
사설 토토uẩn bị usrrptplan (int) 사설 토토ọn * Từ người dùng u, nhật ký l trong đó u.usrid = $ 1 và u.usrid = l.usrid Và l.date = $ 2; Thực hiện usrrptplan (1, current_date);
Trong ví dụ này, loại dữ liệu của tham số thứ hai không được chỉ định, do đó nó được suy ra từ ngữ cảnh trong đó$ 2
được sử dụng.
Tiêu 사설 토토uẩn SQL bao gồm A사설 토토uẩn bị
Câu lệnh, nhưng nó 사설 토토ỉ được sử dụng trong SQL nhúng. Phiên bản này của사설 토토uẩn bị
Câu lệnh cũng sử dụng cú pháp hơi khác.
Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không khớp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài liệu.