sql >> Database >  >> RDS >> PostgreSQL

Rijen ophalen uit meerdere tabellen met UNION ALL of één tabel in productie gebruiken?

Over het algemeen vind ik dat uitgebreid gebruik van UNION suggereert een slecht databaseontwerp. Er zijn gevallen waarin UNION en UNION ALL logisch, maar ze zouden relatief zeldzaam moeten zijn buiten recursieve algemene tabeluitdrukkingen.

PostgreSQL biedt een vrij groot aantal opties om de prestaties op een enkele tabel beheersbaar te houden, en zoals u aangeeft, zijn gedeeltelijke indexen een zeer goede manier om dit probleem te beheren.

Het grote probleem met het opsplitsen van tabellen zodat zulke UNION uitspraken veel voorkomen, is dat het beheer van primaire en externe sleutels behoorlijk problematisch is. Over het algemeen is het bijna altijd veel beter om ervoor te zorgen dat uw gegevensstructuur eerst duidelijk en beheersbaar is, en dan zorgen te maken over optimalisatie, dan u zorgen te maken over optimalisatie en vervolgens proberen de geoptimaliseerde oplossing beheersbaar te maken.




  1. mysqldump-tabel zonder de primaire sleutel te dumpen

  2. yii2 hoe zoeken te gebruiken met sqldataProvider

  3. MySQL:verwijder alle rijen ouder dan 10 minuten

  4. MySQL:selecteer, groepeer op en transformeer rijen om kolommen te scheiden :)