e uso a seguinte consulta para ler em blocos o banco
select * from uc limit 50 offset 50
os registros sao retornados na ordem correta!!!
ae eu executo um update em um registro que foi retornado na consulta (update tabela set campo2=‘nada’ where campo1 = 55 ) e volto a realizar a consulta para ler um novo bloco…
e os registros naum voltam mais ordenados!!!
o que acontece de errado?!?!?!?!?!?! :!: :?: :!: :?:
Nenhum banco SQL que se preza tem a obrigação de voltar os dados ordenados se você não usa um ORDER BY.
Aliás, evite usar SELECT * - isso é uma grande fonte de problemas em programas, porque você nunca fica sabendo se alguma alteração em “schema” de tabelas quebra ou não algum seu programa. Liste sempre todas as colunas usadas, mesmo que sejam 20 ou 30.
A
andrericarte
thingol:
Nenhum banco SQL que se preza tem a obrigação de voltar os dados ordenados se você não usa um ORDER BY.
Aliás, evite usar SELECT * - isso é uma grande fonte de problemas em programas, porque você nunca fica sabendo se alguma alteração em “schema” de tabelas quebra ou não algum seu programa. Liste sempre todas as colunas usadas, mesmo que sejam 20 ou 30.
tente usar um order by em uma tabela de milhoes e veja o que acontece… se vc tiver tempo…
o que eu quero é ler de maneira rapida e simples… como eu uso indice neste caso? tem como setar ele???
ps:outra coisa o * é apenas um exemplo no codigo… pode substituir por campo2, campo3… mas o problema ainda continua…
T
thingol
CONSTRAINT campo1_pk PRIMARY KEY (campo1 cod)
se você disse que a chave primária é Campo1, então muitos bancos (mesmo sem a cláusula ORDER BY) costumam manter os dados ordenados pela chave primária (e é por isso que você disse que os dados vinham ordenados).
Não sei se no caso do PostgreSQL ele funciona assim quando você efetua um UPDATE. De qualquer maneira, é melhor pôr um índice em vez de ficar “confiando” em uma coisa que “parece” funcionar de vez em quando.
*(Como de costume, o nome do banco não é “postgree” nem “postegree” como já vi escrito por aí, mas PostgreSQL. Não é nem mesmo Postgres - que é um banco que deu origem ao PostgreSQL).