<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="cs">
	<id>http://postgres.cz/index.php?action=history&amp;feed=atom&amp;title=N%C3%A1hrada_zbytn%C4%9Bl%C3%BDch_%28bloated%29_index%C5%AF</id>
	<title>Náhrada zbytnělých (bloated) indexů - Historie editací</title>
	<link rel="self" type="application/atom+xml" href="http://postgres.cz/index.php?action=history&amp;feed=atom&amp;title=N%C3%A1hrada_zbytn%C4%9Bl%C3%BDch_%28bloated%29_index%C5%AF"/>
	<link rel="alternate" type="text/html" href="http://postgres.cz/index.php?title=N%C3%A1hrada_zbytn%C4%9Bl%C3%BDch_(bloated)_index%C5%AF&amp;action=history"/>
	<updated>2026-05-13T01:37:07Z</updated>
	<subtitle>Historie editací této stránky</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>http://postgres.cz/index.php?title=N%C3%A1hrada_zbytn%C4%9Bl%C3%BDch_(bloated)_index%C5%AF&amp;diff=571&amp;oldid=prev</id>
		<title>imported&gt;Pavel v 4. 1. 2016, 19:16</title>
		<link rel="alternate" type="text/html" href="http://postgres.cz/index.php?title=N%C3%A1hrada_zbytn%C4%9Bl%C3%BDch_(bloated)_index%C5%AF&amp;diff=571&amp;oldid=prev"/>
		<updated>2016-01-04T19:16:50Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;* klonování indexů:&lt;br /&gt;
&amp;lt;pre&amp;gt;psql -At -c &amp;quot;select (select replace(replace(replace(indexdef,&amp;#039;INDEX&amp;#039;,&amp;#039;INDEX CONCURRENTLY&amp;#039;),&amp;#039;_pkey&amp;#039;,&amp;#039;_pk2&amp;#039;),&amp;#039;_idx&amp;#039;,&amp;#039;_ix2&amp;#039;) from pg_indexes &lt;br /&gt;
where indexname=c.relname) from pg_class c where relkind = &amp;#039;i&amp;#039; and pg_table_size(c.oid) &amp;gt; 1024*1024*1024*4.0;&amp;quot; mydb | psql -S mydb&amp;lt;/pre&amp;gt;&lt;br /&gt;
* promazání neklíčových indexů:&lt;br /&gt;
&amp;lt;pre&amp;gt;psql -At -c &amp;quot;select &amp;#039;drop index &amp;#039; || relname from pg_class c where relkind = &amp;#039;i&amp;#039; and pg_table_size(c.oid) &amp;gt; 1024*1024*1024*4.0 and relname not like &amp;#039;%_pkey&amp;#039;&amp;quot; mydb | psql -S mydb&amp;lt;/pre&amp;gt;&lt;br /&gt;
* přejmenování neklíčových indexů na původní název:&lt;br /&gt;
&amp;lt;pre&amp;gt;psql -At  -c &amp;quot;select &amp;#039;alter index &amp;#039; || indexname || &amp;#039; rename to &amp;#039; || replace(indexname, &amp;#039;_ix2&amp;#039;,&amp;#039;_idx&amp;#039;) from pg_indexes where indexname like &amp;#039;%_ix2&amp;#039;&amp;quot; mydb | psql -S mydb&amp;lt;/pre&amp;gt;&lt;br /&gt;
* náhrada klíčových indexů v omezení:&lt;br /&gt;
&amp;lt;pre&amp;gt;alter table f_campaign_aaabx07i2nayhun_aaabyxpbdtayldf_aaabz_aaab10pbhvas4ph &lt;br /&gt;
  drop constraint f_campaign_aaabx07i2nayhun_aaabyxpbdtayldf_aaabz_aaab10pbhv_pkey,&lt;br /&gt;
  add constraint f_campaign_aaabx07i2nayhun_aaabyxpbdtayldf_aaabz_aaab10pbhv_pkey PRIMARY KEY USING INDEX f_campaign_aaabx07i2nayhun_aaabyxpbdtayldf_aaabz_aaab10pbhv_pk2;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* reindexace menších indexů:&lt;br /&gt;
&amp;lt;pre&amp;gt;psql -At -c &amp;quot;select &amp;#039;REINDEX INDEX&amp;#039; || c.relname from pg_class c where relkind = &amp;#039;i&amp;#039; and pg_table_size(c.oid) &amp;lt; 1024*1024*1024*2.0;&amp;quot; mydb | psql -S mydb&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skript pro vygenerování příkazů pro vybranou tabulku:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
do $$&lt;br /&gt;
declare &lt;br /&gt;
  r record;&lt;br /&gt;
  newname text;&lt;br /&gt;
begin&lt;br /&gt;
  for r in &lt;br /&gt;
    SELECT c2.relname as indexname, i.indisprimary,  pg_catalog.pg_get_indexdef(i.indexrelid, 0, true) as indexdef, pg_catalog.pg_get_constraintdef(con.oid, true),&lt;br /&gt;
           c.oid::regclass as tablename&lt;br /&gt;
     FROM pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_index i&lt;br /&gt;
          LEFT JOIN pg_catalog.pg_constraint con ON (conrelid = i.indrelid AND conindid = i.indexrelid AND contype IN (&amp;#039;p&amp;#039;,&amp;#039;u&amp;#039;,&amp;#039;x&amp;#039;))&lt;br /&gt;
     WHERE c.oid = &amp;#039;f_clienthistory_abbbvouh0farz2u_aamllp9oe8abeeo__abd29wbjguact8w&amp;#039;::regclass AND c.oid = i.indrelid AND i.indexrelid = c2.oid&lt;br /&gt;
  loop&lt;br /&gt;
    newname = &amp;#039;fresh_&amp;#039; || md5(r.indexname || r.tablename);&lt;br /&gt;
    insert into commands values(replace(replace(r.indexdef, &amp;#039;INDEX&amp;#039;, &amp;#039;INDEX CONCURRENTLY&amp;#039;), r.indexname, newname) || &amp;#039;;&amp;#039;);&lt;br /&gt;
    if r.indisprimary then&lt;br /&gt;
      insert into commands values(format(&amp;#039;ALTER TABLE %I DROP CONSTRAINT %I, ADD CONSTRAINT %I PRIMARY KEY USING INDEX %I;&amp;#039;,&lt;br /&gt;
                r.tablename, r.indexname, r.indexname, newname));&lt;br /&gt;
    else&lt;br /&gt;
      insert into commands values(format(&amp;#039;BEGIN;DROP INDEX %I;&amp;#039;, r.indexname) || format(&amp;#039;ALTER INDEX %I RENAME TO %I; COMMIT;&amp;#039;, newname, r.indexname));&lt;br /&gt;
    end if;&lt;br /&gt;
    raise notice &amp;#039;refreshed index: %&amp;#039;, r.indexname;&lt;br /&gt;
  end loop;&lt;br /&gt;
end;&lt;br /&gt;
$$ language plpgsql;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>imported&gt;Pavel</name></author>
	</entry>
</feed>