ALTER INDEX
ALTER INDEX â измениÑÑ Ð¾Ð¿Ñеделение индекÑа
СинÑакÑиÑ
ALTER INDEX [ IF EXISTS ]имÑRENAME TOновое_имÑALTER INDEX [ IF EXISTS ]имÑSET TABLESPACEÑабл_пÑоÑÑÑанÑÑвоALTER INDEXимÑDEPENDS ON EXTENSIONимÑ_ÑаÑÑиÑениÑALTER INDEX [ IF EXISTS ]имÑSET (паÑамеÑÑ_Ñ ÑанениÑ[=знаÑение] [, ... ] ) ALTER INDEX [ IF EXISTS ]имÑRESET (паÑамеÑÑ_Ñ ÑанениÑ[, ... ] ) ALTER INDEX ALL IN TABLESPACEимÑ[ OWNED BYимÑ_Ñоли[, ... ] ] SET TABLESPACEновое_Ñабл_пÑоÑÑÑанÑÑво[ NOWAIT ]
ÐпиÑание
ALTER INDEX менÑÐµÑ Ð¾Ð¿Ñеделение ÑÑÑеÑÑвÑÑÑего индекÑа. ÐÑа команда Ð¸Ð¼ÐµÐµÑ Ð½ÐµÑколÑко ÑазновидноÑÑей:
RENAMEФоÑма
RENAMEменÑÐµÑ Ð¸Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑа. Ðа ÑÐ¾Ñ ÑанÑннÑе даннÑе ÑÑо не влиÑеÑ.SET TABLESPACEÐÑа ÑоÑма менÑÐµÑ ÑаблиÑное пÑоÑÑÑанÑÑво индекÑа на заданное и пеÑеноÑÐ¸Ñ Ð² него Ñайл(Ñ) даннÑÑ , ÑвÑзаннÑе Ñ Ð¸Ð½Ð´ÐµÐºÑом. ÐÐ»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑаблиÑного пÑоÑÑÑанÑÑва индекÑа нÑжно бÑÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑем индекÑа и имеÑÑ Ð¿Ñаво
CREATEв новом ÑаблиÑном пÑоÑÑÑанÑÑве. ФоÑмаALL IN TABLESPACEпозволÑÐµÑ Ð¿ÐµÑенеÑÑи из заданного пÑоÑÑÑанÑÑва вÑе индекÑÑ Ð² ÑекÑÑей базе даннÑÑ , блокиÑÑÑ Ð¸Ñ Ð´Ð»Ñ Ð¿ÐµÑемеÑÐµÐ½Ð¸Ñ Ð¸ заÑем пеÑемеÑÐ°Ñ ÐºÐ°Ð¶Ð´Ñй индекÑ. ÐÑа ÑоÑма Ñакже поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ ÑказаниеOWNED BY, Ñ ÐºÐ¾ÑоÑÑм бÑдÑÑ Ð¿ÐµÑемеÑÐµÐ½Ñ ÑолÑко индекÑÑ, пÑинадлежаÑие заданнÑм ÑолÑм. ÐÑли Ñказан паÑамеÑÑNOWAIT, команда завеÑÑиÑÑÑ Ð¾Ñибкой, еÑли не ÑÐ¼Ð¾Ð¶ÐµÑ Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾ полÑÑиÑÑ Ð²Ñе ÑÑебÑемÑе блокиÑовки. ÐамеÑÑÑе, ÑÑо ÑÑа команда не пеÑемеÑÑÐ¸Ñ ÑиÑÑемнÑе каÑалоги; вмеÑÑо Ð½ÐµÑ ÑледÑÐµÑ Ð¸ÑполÑзоваÑÑALTER DATABASEили ÑвнÑе вÑзовÑALTER INDEX. См. Ñакже CREATE TABLESPACE.DEPENDS ON EXTENSIONÐÑа ÑоÑма помеÑÐ°ÐµÑ Ð¸Ð½Ð´ÐµÐºÑ ÐºÐ°Ðº завиÑимÑй Ð¾Ñ ÑаÑÑиÑениÑ, Ñак ÑÑо пÑи Ñдалении ÑаÑÑиÑÐµÐ½Ð¸Ñ Ð±ÑÐ´ÐµÑ Ð°Ð²ÑомаÑиÑеÑки ÑдалÑн и индекÑ.
SET (паÑамеÑÑ_Ñ ÑанениÑ[=знаÑение] [, ... ] )ÐÑа ÑоÑма наÑÑÑÐ°Ð¸Ð²Ð°ÐµÑ Ð¾Ð´Ð¸Ð½ или неÑколÑко ÑпеÑиÑиÑнÑÑ Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑа паÑамеÑÑов Ñ ÑанениÑ. СпиÑок доÑÑÑпнÑÑ Ð¿Ð°ÑамеÑÑов пÑиведÑн в CREATE INDEX. ÐамеÑÑÑе, ÑÑо ÑÑа команда не менÑÐµÑ ÑодеÑжимое индекÑа немедленно; Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð¶ÐµÐ»Ð°ÐµÐ¼Ð¾Ð³Ð¾ ÑÑÑекÑа в завиÑимоÑÑи Ð¾Ñ Ð¿Ð°ÑамеÑÑов Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ Ð¿ÐµÑеÑÑÑоиÑÑ Ð¸Ð½Ð´ÐµÐºÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ REINDEX.
RESET (паÑамеÑÑ_Ñ ÑанениÑ[, ... ] )ÐÑа ÑоÑма ÑбÑаÑÑÐ²Ð°ÐµÑ Ð¾Ð´Ð¸Ð½ или неÑколÑко ÑпеÑиÑиÑнÑÑ Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑа паÑамеÑÑов Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ðº знаÑениÑм по ÑмолÑаниÑ. Ðак и Ñ
SET, Ð´Ð»Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð³Ð¾ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ Ð²ÑполниÑÑREINDEX.
ÐаÑамеÑÑÑ
IF EXISTSÐе ÑÑиÑаÑÑ Ð¾Ñибкой, еÑли Ð¸Ð½Ð´ÐµÐºÑ Ð½Ðµ ÑÑÑеÑÑвÑеÑ. Ð ÑÑом ÑлÑÑае бÑÐ´ÐµÑ Ð²Ñдано замеÑание.
имÑÐÐ¼Ñ (возможно, дополненное ÑÑ ÐµÐ¼Ð¾Ð¹) ÑÑÑеÑÑвÑÑÑего индекÑа, подлежаÑего изменениÑ.
новое_имÑÐовое Ð¸Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑа.
Ñабл_пÑоÑÑÑанÑÑвоТаблиÑное пÑоÑÑÑанÑÑво, в коÑоÑое бÑÐ´ÐµÑ Ð¿ÐµÑемеÑÑн индекÑ.
имÑ_ÑаÑÑиÑениÑÐÐ¼Ñ ÑаÑÑиÑениÑ, Ð¾Ñ ÐºÐ¾ÑоÑого бÑÐ´ÐµÑ Ð·Ð°Ð²Ð¸ÑеÑÑ Ð¸Ð½Ð´ÐµÐºÑ.
паÑамеÑÑ_Ñ ÑанениÑÐÐ¼Ñ ÑпеÑиÑиÑного Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑа паÑамеÑÑа Ñ ÑанениÑ.
знаÑениеÐовое знаÑение ÑпеÑиÑиÑного Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑа паÑамеÑÑа Ñ ÑанениÑ. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑиÑло или ÑÑÑока, в завиÑимоÑÑи Ð¾Ñ Ð¿Ð°ÑамеÑÑа.
ÐамеÑаниÑ
ÐÑи опеÑаÑии Ñакже возможно вÑполниÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ALTER TABLE. Ðа Ñамом деле ALTER INDEX ÂÂÂâ ÑÑо пÑоÑÑо Ñиноним неÑколÑкиÑ
ÑоÑм ALTER TABLE, ÑабоÑаÑÑиÑ
Ñ Ð¸Ð½Ð´ÐµÐºÑами.
Ранее ÑÑÑеÑÑвовала ÑоÑма ALTER INDEX OWNER, но ÑейÑÐ°Ñ Ð¾Ð½Ð° игноÑиÑÑеÑÑÑ (Ñ Ð¿ÑедÑпÑеждением). ÐладелÑÑем индекÑа Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑолÑко Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ ÑооÑвеÑÑÑвÑÑÑей ÑаблиÑÑ. ÐÑи Ñмене владелÑÑа ÑаблиÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ Ð¸Ð½Ð´ÐµÐºÑа менÑеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки.
Ðакие-либо Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑов ÑиÑÑемного каÑалога не допÑÑкаÑÑÑÑ.
ÐÑимеÑÑ
ÐеÑеименование ÑÑÑеÑÑвÑÑÑего индекÑа:
ALTER INDEX distributors RENAME TO suppliers;
ÐеÑемеÑение индекÑа в дÑÑгое ÑаблиÑное пÑоÑÑÑанÑÑво:
ALTER INDEX distributors SET TABLESPACE fasttablespace;
Ðзменение ÑакÑоÑа Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа (пÑедполагаеÑÑÑ, ÑÑо ÑÑо поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¼ÐµÑод индекÑа):
ALTER INDEX distributors SET (fillfactor = 75); REINDEX INDEX distributors;
СовмеÑÑимоÑÑÑ
ALTER INDEX ÑвлÑеÑÑÑ ÑаÑÑиÑением Postgres Pro.