Tenho uma tabela que salva as informações necessárias para enviar notificações aos usuários. agora as colunas UID nesta tabela são quase únicas porque na maioria das vezes cada usuário se inscreve com um dispositivo. mas é possível ter várias linhas com o mesmo UID, de modo que o índice exclusivo está fora de imagem e, devido à natureza quase exclusiva dos dados, também não acho que o índice usual seja útil, pois levará quase o mesmo tempo para pesquisar o índice como toda a tabela .
Atualmente a solução que me vem à mente é salvar o código primário de cada linha da tabela de notificações em uma coluna da tabela Users em formato separado por vírgulas.
Um índice não precisa ser exclusivo para ser eficiente e, na verdade, raramente descobri que tornar meus índices únicos fez muita diferença em termos de desempenho, em minha experiência. (Em certos casos, depende do tamanho dos dados, mas não o suficiente para ser mensuravelmente importante para mim até agora.) Nessa nota, minha experiência é no Microsoft SQL Server, portanto, saber qual sistema de banco de dados, versão e implementação (quando aplicável) seria útil aqui.
Dito isto, na maioria dos Sistemas de Gerenciamento de Banco de Dados Relacionais (RDBMS) , o índice padrão é um índice B-Tree . Isso significa que seus dados são armazenados em uma estrutura de dados lógica B-Tree que é muito mais eficiente para pesquisa do que a própria tabela não indexada inteira. Não importa se seus dados são " quase " únicos ou perfeitamente únicos. Se seus dados forem completamente redundantes (todos os valores das colunas que você prevê que a indexação é exatamente o mesmo), a indexação provavelmente não ajudará muito, mas no seu caso um índice B-Tree regular parece que funcionaria muito bem .