No SQL Server, a exibição indexada é um inferno de limitações. Mas eu preciso de um. Eu tenho uma função SQLCLR do formatador que cria uma versão embelezada de uma chave de domínio - os usuários querem poder pesquisar em substrings dessa versão embelezada. Portanto, preciso de um índice de texto completo em uma coluna calculada persistente ou em uma exibição materializada.
No entanto, o formatador depende dos dados armazenados em várias tabelas.
Portanto, isso funciona bem para uma exibição, mas não para uma coluna computada persistente porque elas não podem consultar várias tabelas.
Meu método SQLCLR é preciso e determinístico , portanto, deve ser qualificado para uso em exibições indexadas, mas exibições indexadas não podem ter SQLCLR em suas chaves de índice.
Eu poderia reimplementar meu formatador usando a FORMAT
função T-SQL... mas tambémFORMAT
é incompatível com exibições indexadas.
As visualizações indexadas podem fazer alguma coisa ? Nunca ?
Estou aberto à abordagem "role sua própria visão materializada com gatilhos" se alguém puder me indicar um bom documento sobre as melhores práticas para fazer isso. Da última vez que tentei, ele saiu do controle e houve uma tremenda duplicação entre o código para inserção e atualização e a inicialização.
Existe alguma maneira que estou perdendo para obter pesquisas de texto com desempenho em dados calculados em alguns milhões de linhas, sem usar uma exibição materializada/indexada ou uma coluna calculada persistente?
O formatador não realiza acesso aos dados. No entanto, os dados que preciso alimentar no formatador para que seja útil virão de várias tabelas (com uma boa junção regular), portanto, não posso resolver esse problema com colunas computadas persistentes. Não consigo digitar a coluna SQLCLR, portanto, não posso usá-la em um índice de texto completo.
Achei que isso seria simples. Colunas persistentes e exibições indexadas são projetadas para realizar cálculos na gravação e para implementar adequadamente o padrão de observador para que as alterações em suas dependências sejam refletidas no valor calculado.