Essa pergunta é comum para todos os produtos de banco de dados que uso, viz. SQL Server, MySQL, Oracle e PostgreSQL.
Criei um novo banco de dados e as tabelas, no momento, não possuem registros. Eu criei índices em todas essas colunas de tabelas que são necessárias em consultas com frequência. Quero saber como os índices são atualizados fisicamente (agrupados) e logicamente (não agrupados) quando continuo adicionando registros em tabelas? O índice é atualizado automaticamente ou preciso atualizar os índices manualmente, de tempos em tempos?
Os índices são atualizados automaticamente em relação ao que está armazenado neles (os valores das colunas das linhas que são indexadas).
No entanto, alguns DBMS exigem manutenção regular (também conhecida como "reconstrução") para otimizar o armazenamento dos valores de índice.
Versões mais antigas do Microsoft SQL Server exigiam uma reconstrução de índice regularmente para mantê-los eficientes. Mas não sei se isso ainda é verdade com versões mais recentes (2005,2008)
Não há necessidade de recriar índices no Oracle.
O processo de (auto)vácuo do PostgreSQL deve cuidar da recuperação de espaço, mas às vezes (embora raramente) também requer uma reconstrução.
Os valores no próprio índice serão atualizados automaticamente. Só posso falar pelo SQL Server, mas os índices geralmente precisam ser reconstruídos ou reorganizados devido à ocorrência de fragmentação - especialmente se estiver em uma tabela que é atualizada regularmente. A fragmentação do índice pode ser monitorada por meio do DMV sys.dm_db_index_physical_stats:
http://msdn.microsoft.com/en-us/library/ms188917.aspx
A melhor estratégia é normalmente usar um script que procura índices acima de um determinado nível de fragmentação e depois reconstrói ou reorganiza com base nesse valor. Eu sei que muitas pessoas usam os scripts de Ola Hallengren:
http://ola.hallengren.com/
Em nossos bancos de dados de produção, executamos scripts semelhantes a este todas as noites para verificar a fragmentação (embora isso seja possivelmente um exagero).
Os índices que você criou são gerenciados automaticamente pelo servidor de banco de dados.
Agora, a partir do momento que você precisa fazer o login e fazer algumas manutenções
No PostgreSQL, sei que você precisa aspirar os índices para limpar o lixo.
No MySQL, sei que você precisa executar a otimização para garantir que os índices sejam classificados corretamente e tenham subíndices corretos.