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