F.69. tsm_system_rows â меÑод извлеÑÐµÐ½Ð¸Ñ Ð²ÑбоÑки SYSTEM_ROWS Ð´Ð»Ñ TABLESAMPLE #
ÐодÑÐ»Ñ tsm_system_rows пÑедоÑÑавлÑÐµÑ Ð¼ÐµÑод извлеÑÐµÐ½Ð¸Ñ Ð²ÑбоÑки SYSTEM_ROWS, коÑоÑÑй можно иÑполÑзоваÑÑ Ð² пÑедложении TABLESAMPLE ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ SELECT.
ÐÑÐ¾Ñ Ð¼ÐµÑод извлеÑÐµÐ½Ð¸Ñ Ð²ÑбоÑки пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð¾Ð´Ð¸Ð½ ÑелоÑиÑленнÑй аÑгÑменÑ, задаÑÑий макÑималÑное ÑиÑло вÑбиÑаемÑÑ ÑÑÑок. РезÑлÑÑиÑÑÑÑÐ°Ñ Ð²ÑбоÑка бÑÐ´ÐµÑ ÑодеÑжаÑÑ Ð² ÑоÑноÑÑи ÑÑолÑко ÑÑÑок, еÑли ÑолÑко в ÑаблиÑе не оказÑваеÑÑÑ Ð¼ÐµÐ½ÑÑе заданного ÑиÑла ÑÑÑок (в ÑÑом ÑлÑÑае вÑдаÑÑÑÑ Ð²ÑÑ ÑаблиÑа).
Ðак и вÑÑÑоеннÑй меÑод извлеÑÐµÐ½Ð¸Ñ Ð²ÑбоÑки SYSTEM, SYSTEM_ROWS пÑÐ¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ Ð²ÑбоÑÐºÑ Ð½Ð° ÑÑовне блоков, Ñак ÑÑо вÑбоÑка бÑÐ´ÐµÑ Ð½Ðµ полноÑÑÑÑ ÑлÑÑайной, а Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð´Ð²ÐµÑгаÑÑÑÑ ÑÑÑекÑам клаÑÑеÑизаÑии, оÑобенно когда запÑаÑиваеÑÑÑ Ð½ÐµÐ±Ð¾Ð»ÑÑое ÑиÑло ÑÑÑок.
SYSTEM_ROWS не поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¿Ñедложение REPEATABLE.
ÐаннÑй модÑÐ»Ñ ÑÑиÑаеÑÑÑ Â«Ð´Ð¾Ð²ÐµÑеннÑм», Ñо еÑÑÑ ÐµÐ³Ð¾ могÑÑ ÑÑÑанавливаÑÑ Ð¾Ð±ÑÑнÑе полÑзоваÑели, имеÑÑие пÑаво CREATE в ÑекÑÑей базе даннÑÑ
.
F.69.1. ÐÑимеÑÑ #
ÐÑÐ¸Ð¼ÐµÑ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð²ÑбоÑки из ÑаблиÑÑ Ñ Ð¿Ñименением меÑода SYSTEM_ROWS. СнаÑала нÑжно ÑÑÑановиÑÑ ÑаÑÑиÑение:
CREATE EXTENSION tsm_system_rows;
ÐаÑем Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ ÐµÐ³Ð¾ в команде SELECT, напÑÐ¸Ð¼ÐµÑ Ñак:
SELECT * FROM my_table TABLESAMPLE SYSTEM_ROWS(100);
ÐÑа команда вÑдаÑÑ Ð²ÑбоÑÐºÑ Ð¸Ð· 100 ÑÑÑок из ÑаблиÑÑ my_table (а еÑли в ÑаблиÑе не окажеÑÑÑ 100 видимÑÑ
ÑÑÑок, бÑдÑÑ Ð²Ð¾Ð·Ð²ÑаÑÐµÐ½Ñ Ð²Ñе ÑÑÑоки).