sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL:Hur man optimerar min databas för att lagra och fråga en enorm graf

Jag antar att det beror på en "densitet" av samma-nyckel-poster på disken. Jag tror att posterna med samma id lagras i täta (dvs. få antal block) och de med samma länk lagras i sparse (dvs. , distribueras till ett stort antal block). Om du har infogat poster i ordningen för id kan denna situation inträffa.

Antag att:1. det finns 10 000 poster,2. de lagras i ordning som (id, länk) =(1, 1), (1, 2),..., (1, 100), (2, 1)... och3. 50 poster kan lagras i ett block.

I antagandet ovan består block #1~#3 av posterna (1, 1)~(1, 50), (1, 51)~(1, 100) och (2, 1)~(2, 50) respektive.

När du SELECT * FROM edges WHERE id=1 , endast 2 block (#1, #2) ska laddas och skannas. Å andra sidan, SELECT * FROM edges WHERE link=1 kräver 50 block (#1, #3, #5,...), även om antalet rader är samma.



  1. Hur tar man med mer än en rad (mysql) resultat i samma variabel när man kör en json_encode?

  2. Fråga för att räkna de distinkta orden av alla värden i en kolumn

  3. SubSonic 3 och MySQL, att ta bort understreck från kolumnnamnet i metoden CleanUp() orsakar undantag när egenskapen används i linq-query

  4. Hur man laddar data i textrutan från SQL-databastabellen