MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

PostgreSQL и MongoDB WHERE IN условия

Разликата във времето за изпълнение на заявката е, защото първото изпълнение трябва да прочете много повече 8kB блокове от диска:сравнете shared read=631496 и shared read=30359 .

PostgreSQL решава да не използва индекса за WHERE условие, но индексът, който поддържа ORDER BY . Имайте предвид, че поради IN не е възможно да се използва един индекс и за WHERE условие и ORDER BY – това е възможно само за WHERE условия, които използват = като оператор за сравнение.

Така че PostgreSQL трябва да направи избор и вероятно прави грешния избор:тъй като неговата статистика казва на оптимизатора, че има много редове, които отговарят на WHERE условие, той решава да прочете редовете в ORDER BY подредете и изхвърлете тези, които не отговарят на WHERE условие, докато намери 100 реда с резултати. За съжаление, изглежда, че съответстващите редове не са близо до началото на таблицата и PostgreSQL трябва да сканира много редове (Rows Removed by Filter: 17276154 ).

За да го направите, използвайте сканиране на индекс за WHERE условие, променете ORDER BY клауза, така че PostgreSQL да не може да използва индекс за него:

ORDER BY datetime + INTERVAL '0 seconds' DESC

Тъй като тук няма полза от индекс с няколко колони, най-добрият индекс би бил

CREATE INDEX ON report (sensor_id);


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да стартирате js файл в mongo с помощта на spring data

  2. Монго изключение

  3. Група брой 2 артикула масив от обекти mongodb

  4. Относно MongoDB, защо го използваме? Терминологията и внедряването на MongoDB

  5. Импортирайте csv данни като масив в mongodb, като използвате mongoimport