PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

जांचें कि क्या पोस्टग्रेज JSON सरणी में एक स्ट्रिंग है

PostgreSQL 9.4 के अनुसार, आप ? . का उपयोग कर सकते हैं ऑपरेटर:

select info->>'name' from rabbits where (info->'food')::jsonb ? 'carrots';

आप ? . को भी इंडेक्स कर सकते हैं "food" . पर क्वेरी कुंजी अगर आप jsonb . पर स्विच करते हैं इसके बजाय टाइप करें:

alter table rabbits alter info type jsonb using info::jsonb;
create index on rabbits using gin ((info->'food'));
select info->>'name' from rabbits where info->'food' ? 'carrots';

बेशक, एक पूर्णकालिक खरगोश कीपर के रूप में शायद आपके पास इसके लिए समय नहीं है।

अपडेट करें: यहां 1,000,000 खरगोशों की तालिका पर प्रदर्शन में सुधार का प्रदर्शन दिया गया है जहां प्रत्येक खरगोश को दो खाद्य पदार्थ पसंद हैं और उनमें से 10% गाजर पसंद करते हैं:

d=# -- Postgres 9.3 solution
d=# explain analyze select info->>'name' from rabbits where exists (
d(# select 1 from json_array_elements(info->'food') as food
d(#   where food::text = '"carrots"'
d(# );
 Execution time: 3084.927 ms

d=# -- Postgres 9.4+ solution
d=# explain analyze select info->'name' from rabbits where (info->'food')::jsonb ? 'carrots';
 Execution time: 1255.501 ms

d=# alter table rabbits alter info type jsonb using info::jsonb;
d=# explain analyze select info->'name' from rabbits where info->'food' ? 'carrots';
 Execution time: 465.919 ms

d=# create index on rabbits using gin ((info->'food'));
d=# explain analyze select info->'name' from rabbits where info->'food' ? 'carrots';
 Execution time: 256.478 ms


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres-XL 9.6 . में नया क्या है?

  2. कैसे टैन () PostgreSQL में काम करता है

  3. PostgreSQL में मॉनिटर करने के लिए मुख्य चीजें - आपके कार्यभार का विश्लेषण

  4. बाहर से एक डॉकटर कंटेनर में Postgresql से कनेक्ट करना

  5. अद्यतन करने योग्य दृश्यों के लिए CHECK क्लॉज