2012/9/4 Flavio Henrique Araque Gurgel <[email protected]> > > On 03-09-2012 22:08, Cesar Moraes wrote: > > Legal Flavio obrigado pela resposta. > > > > Então eu não posso pedir para ele montar a árvore ao contrario? > > > > E qual a diferença de criar um index ASC ou DESC? > > Desculpe-me, eu havia entendido sua pergunta errado. > > Você pode criar o índice em ordem ascendente ou descendente. > Nunca fiz testes, mas teoricamente, se a maioria de suas consultas fizer > ORDER BY ... DESC ou se a cláusula WHERE pedir na maioria dos casos os > dados maiores de valor, o uso de índice descendente iriam privilegiar > essas consultas. >
Na prática, nunca testei, nem tenho relatos de ganhos nesses casos. Pode > ser que alguém na lista tenha. > > O link [1], que o Euler passou, explica isso bem. O PostgreSQL pode fazer uma varredura no índice ao contrário (de cima para baixo, se pensarmos numa árvore), logo se você tem ou não a cláusula DESC num índice de um único campo não ajuda em nada. Mas, também do link, se você tem algo menos comun (ou não) como uma consulta assim: SELECT ... ORDER BY x ASC, y DESC; Não adianta ter um índice com x e y (ambos em mesma ordem), pois mesmo lendo ao contrário não tem a ordenação esperada, logo precisariamos de um dos seguintes: CREATE INDEX ... (x ASC, y DESC) ou CREATE INDEX ... (x DESC, y ASC) Só pra acrescentar, se você usar um ORDER BY ... DESC num índice ASC e usar o EXPLAIN, pode ver o seguinte: "Index Scan Backward using idx_bla ... ". Ou seja, ele lê o índice ao contrário. [1] http://www.postgresql.org/docs/9.2/static/indexes-ordering.html -- Matheus de Oliveira
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
