sql >> Databáze >  >> RDS >> PostgreSQL

PostgreSQL - Provedena aktualizace tabulky ve funkci, kterou jsem vytvořil, a nyní se změnilo pořadí řádků v tabulce

Tabulka nemá přirozené pořadí řádků, některé databázové systémy ve skutečnosti odmítnou váš dotaz, pokud nepřidáte ORDER BY klauzule na konci vašeho SELECT

Proč se pořadí změnilo?

Protože databázový stroj načítá vaše řádky ve fyzickém pořadí, ve kterém pocházejí z úložiště. Některé motory, jako je SQL Server, mohou mít CLUSTERED INDEX což si vynucuje fyzické pořadí, ale stále není skutečně zaručeno, že výsledky dostanete v tomto přesném pořadí.

Clusterový index existuje většinou jako optimalizace. PostgreSQL má podobný CLUSTER funkce změnit fyzické pořadí, ale je to náročný proces, který uzamkne tabulku:http://www.postgresql.org/docs/9.1/static/sql-cluster.html

Jak vynutit abecední pořadí řádků?

Přidejte ORDER BY klauzule ve vašem dotazu.

SELECT * FROM table ORDER BY column



  1. ORA-00942:Tabulka nebo pohled neexistuje pro kombinovanou tabulku případů a sloupce

  2. Smíšené dotazy MySQL a Sphinx

  3. Zrychlení (pomalé) obrovské databáze wordpress

  4. Dezinfekce při ukládání serializovaného pole