sql >> Database teknologi >  >> RDS >> PostgreSQL

PostgreSQL:Sådan optimerer du min database til lagring og forespørgsel på en enorm graf

Jeg gætter på, at det er på grund af en "densitet" af samme nøgle-records på disken. Jeg tror, ​​at posterne med samme id er gemt i tæt (dvs. få antal blokke), og dem med samme link er gemt i sparse (dvs. , distribueret til et stort antal blokke).Hvis du har indsat poster i rækkefølgen af ​​id, kan denne situation ske.

Antag at:1. der er 10.000 poster,2. de er gemt i rækkefølgen som (id, link) =(1, 1), (1, 2),..., (1, 100), (2, 1)... og3. 50 poster kan gemmes i en blok.

I antagelsen ovenfor består blok #1~#3 af posterne (1, 1)~(1, 50), (1, 51)~(1, 100) og (2, 1)~(2, 50) hhv.

Når du SELECT * FROM edges WHERE id=1 , kun 2 blokke (#1, #2) skal indlæses og scannes. På den anden side SELECT * FROM edges WHERE link=1 kræver 50 blokke (#1, #3, #5,...), selvom antallet af rækker er det samme.



  1. Salter mine hashes med PHP og MySQL

  2. Hvordan kan jeg vælge fra liste over værdier i SQL Server

  3. Skabelonmønstre og modifikatorer til numerisk formatering i PostgreSQL

  4. Slet forespørgsel For at slette rækker i MySQL