Quando uma coluna inteira é marcada como chave primária em uma tabela SQLite, um índice também deve ser explicitamente criado para ela? O SQLite não parece criar automaticamente um índice para uma coluna de chave primária, mas talvez o indexe de qualquer maneira, dada a sua finalidade? (Eu estarei pesquisando nessa coluna o tempo todo).
A situação seria diferente para uma chave primária de cadeia?
fonte
sqlite_master
tabela com um nome que começa comsqlite_autoindex_
.UNIQUE
índice (ou umaUNIQUE
restrição) nos campos pai / referência, se ele não existir; ele é recomendado que a criança / campo referenciando (s) têm um índice (que geralmente não será exclusivo): ver aquiSQL Data Constraints
aqui diz: Na maioria dos casos , as restrições UNIQUE e PRIMARY KEY são implementadas criando um índice exclusivo no banco de dados. (As exceções são INTEGER PRIMARY KEY e PRIMARY KEYs nas tabelas SEM ROWID.) Então a resposta nem sempre é verdadeira?Se uma coluna estiver marcada INTEGER PRIMARY KEY, na verdade, será duas vezes mais rápida que uma pesquisa semelhante feita especificando qualquer outra PRIMARY KEY ou valor indexado . Isto é porque:
Consulte: http://www.sqlite.org/lang_createtable.html#rowid
fonte
Um banco de dados sempre cria silenciosamente um índice para uma chave primária exclusiva, para que possa verificar internamente se é única e eficiente.
Depois de criado, ele será usado quando necessário.
Obviamente, ele não será sempre agrupado, e você especifica geralmente no esquema se deseja que seja.
fonte