【原创】PostgreSQL hstore 列性能提升一例
PostgreSQL支持hstore来存放KEY-VALUE这类数据,其实也类似于ARRAY或者JSON类型。要高效的使用这类数据,当然离不开高效的索引。我们今天就来看看两类不同的索引
PostgreSQL 支持hstore 来存放KEY->VALUE这类数据, 其实也类似于ARRAY或者JSON类型。 要高效的使用这类数据,当然离不开高效的索引。我们今天就来看看两类不同的索引对于同一种检索请求的性能问题。
假如我们有这样一个原始表,基于str1字段有一个BTREE索引。
t_girl=# \d status_check; Table "ytt.status_check" Column | Type | Modifiers --------+-----------------------+----------- is_yes | boolean | not null str1 | character varying(20) | not null str2 | character varying(20) | not null Indexes: "index_status_check_str1" btree (str1)里面有10W条记录。 数据大概如下,
t_girl=# select * from status_check limit 2; is_yes | str1 | str2 --------+------+---------------------- f | 0 | cfcd208495d565ef66e7 t | 1 | c4ca4238a0b923820dcc (2 rows) Time: 0.617 ms t_girl=#存放hstore类型的status_check_hstore 表结构,基于str1_str2字段有一个GIST索引。
Table "ytt.status_check_hstore" Column | Type | Modifiers -----------+---------+----------- is_yes | boolean | str1_str2 | hstore | Indexes: "idx_str_str2_gist" gist (str1_str2) t_girl=# select * from status_check_hstore limit 2; is_yes | str1_str2 --------+----------------------------- f | "0"=>"cfcd208495d565ef66e7" t | "1"=>"c4ca4238a0b923820dcc" (2 rows) Time: 39.874 ms接下来我们要得到跟查询原始表一样的结果,当然原始表的查询非常高效。 表语句以及结果如下,
t_girl=# select * from status_check where str1 in ('10','23','33'); is_yes | str1 | str2 --------+------+---------------------- t | 10 | d3d9446802a44259755d t | 23 | 37693cfc748049e45d87 f | 33 | 182be0c5cdcd5072bb18 (3 rows) Time: 0.690 ms上面的语句用了不到1毫秒。
接下来我们对hstore表进行查询,
t_girl=# select is_yes,skeys(str1_str2),svals(str1_str2) from status_check_hstore where str1_str2 ?| array['10','23','33']; is_yes | skeys | svals --------+-------+---------------------- t | 10 | d3d9446802a44259755d t | 23 | 37693cfc748049e45d87 f | 33 | 182be0c5cdcd5072bb18 (3 rows) Time: 40.256 ms我的天,比原始表的查询慢了几十倍。
看下查询计划,把所有行都扫描了一遍。
QUERY PLAN ----------------------------------------------------------------------------------- Bitmap Heap Scan on status_check_hstore (cost=5.06..790.12 rows=100000 width=38) Recheck Cond: (str1_str2 ?| '{10,23,33}'::text[]) -> Bitmap Index Scan on idx_str_str2_gist (cost=0.00..5.03 rows=100 width=0) Index Cond: (str1_str2 ?| '{10,23,33}'::text[]) (4 rows) Time: 0.688 ms我们想办法来优化这条语句, 如果把这条语句变成跟原始语句一样的话,那么是否就可以用到BTREE索引了?

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Laravel ialah rangka kerja pembangunan PHP yang popular, tetapi kadangkala ia dikritik kerana lambat seperti siput. Apakah sebenarnya yang menyebabkan kelajuan Laravel tidak memuaskan? Artikel ini akan memberikan penjelasan yang mendalam tentang sebab mengapa Laravel lambat seperti siput dari pelbagai aspek, dan menggabungkannya dengan contoh kod khusus untuk membantu pembaca memperoleh pemahaman yang lebih mendalam tentang masalah ini. 1. Isu prestasi pertanyaan ORM Dalam Laravel, ORM (Pemetaan Perhubungan Objek) ialah fungsi yang sangat berkuasa yang membolehkan

Bagaimanakah kami menyediakan dan mengoptimumkan prestasi selepas menerima komputer baharu Pengguna boleh terus membuka Privasi dan Keselamatan, dan kemudian klik Umum (ID Pengiklanan, Kandungan Tempatan, Pelancaran Aplikasi, Pengesyoran Tetapan, Alat Produktiviti atau buka terus Dasar Kumpulan Setempat Hanya gunakan editor untuk melaksanakan operasi Izinkan saya memperkenalkan kepada pengguna secara terperinci cara mengoptimumkan tetapan dan meningkatkan prestasi komputer Win11 baharu selepas menerimanya: 1. Tekan kombinasi kekunci [Win+i] untuk membuka Tetapan, kemudian klik [Privasi dan Keselamatan] di sebelah kiri, dan klik [Umum (ID Pengiklanan, Kandungan Setempat, Pelancaran Apl, Cadangan Tetapan, Produktiviti) di bawah Kebenaran Windows pada Alatan yang betul)].

Kutipan sampah (GC) Golang sentiasa menjadi topik hangat di kalangan pemaju. Sebagai bahasa pengaturcaraan yang pantas, pengumpul sampah terbina dalam Golang boleh mengurus memori dengan sangat baik, tetapi apabila saiz program bertambah, beberapa masalah prestasi kadangkala berlaku. Artikel ini akan meneroka strategi pengoptimuman GC Golang dan menyediakan beberapa contoh kod khusus. Pengumpulan sampah dalam pemungut sampah Golang Golang adalah berdasarkan sapuan tanda serentak (concurrentmark-s

Kerumitan masa mengukur masa pelaksanaan algoritma berbanding saiz input. Petua untuk mengurangkan kerumitan masa program C++ termasuk: memilih bekas yang sesuai (seperti vektor, senarai) untuk mengoptimumkan storan dan pengurusan data. Gunakan algoritma yang cekap seperti isihan pantas untuk mengurangkan masa pengiraan. Hapuskan berbilang operasi untuk mengurangkan pengiraan berganda. Gunakan cawangan bersyarat untuk mengelakkan pengiraan yang tidak perlu. Optimumkan carian linear dengan menggunakan algoritma yang lebih pantas seperti carian binari.

Penyahkodan kesesakan prestasi Laravel: Teknik pengoptimuman didedahkan sepenuhnya! Laravel, sebagai rangka kerja PHP yang popular, menyediakan pembangun dengan fungsi yang kaya dan pengalaman pembangunan yang mudah. Walau bagaimanapun, apabila saiz projek meningkat dan bilangan lawatan meningkat, kami mungkin menghadapi cabaran kesesakan prestasi. Artikel ini akan menyelidiki teknik pengoptimuman prestasi Laravel untuk membantu pembangun menemui dan menyelesaikan masalah prestasi yang berpotensi. 1. Pengoptimuman pertanyaan pangkalan data menggunakan pemuatan tertunda Eloquent Apabila menggunakan Eloquent untuk menanya pangkalan data, elakkan

Kesesakan prestasi Laravel didedahkan: penyelesaian pengoptimuman didedahkan! Dengan perkembangan teknologi Internet, pengoptimuman prestasi laman web dan aplikasi menjadi semakin penting. Sebagai rangka kerja PHP yang popular, Laravel mungkin menghadapi kesesakan prestasi semasa proses pembangunan. Artikel ini akan meneroka masalah prestasi yang mungkin dihadapi oleh aplikasi Laravel dan menyediakan beberapa penyelesaian pengoptimuman dan contoh kod khusus supaya pembangun dapat menyelesaikan masalah ini dengan lebih baik. 1. Pengoptimuman pertanyaan pangkalan data Pertanyaan pangkalan data ialah salah satu kesesakan prestasi biasa dalam aplikasi Web. wujud

1. Tekan kombinasi kekunci (kekunci win + R) pada desktop untuk membuka tetingkap jalankan, kemudian masukkan [regedit] dan tekan Enter untuk mengesahkan. 2. Selepas membuka Registry Editor, kami klik untuk mengembangkan [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorer], dan kemudian lihat jika terdapat item Serialize dalam direktori Jika tidak, kami boleh klik kanan Explorer, buat item baharu dan namakannya Serialize. 3. Kemudian klik Serialize, kemudian klik kanan ruang kosong dalam anak tetingkap kanan, cipta nilai bit DWORD (32) baharu dan namakannya Bintang

Konfigurasi parameter Vivox100s didedahkan: Bagaimana untuk mengoptimumkan prestasi pemproses? Dalam era perkembangan teknologi yang pesat hari ini, telefon pintar telah menjadi bahagian yang amat diperlukan dalam kehidupan seharian kita. Sebagai bahagian penting telefon pintar, pengoptimuman prestasi pemproses berkaitan secara langsung dengan pengalaman pengguna telefon mudah alih. Sebagai telefon pintar berprofil tinggi, konfigurasi parameter Vivox100s telah menarik banyak perhatian, terutamanya pengoptimuman prestasi pemproses telah menarik banyak perhatian daripada pengguna. Sebagai "otak" telefon bimbit, pemproses secara langsung mempengaruhi kelajuan berjalan telefon bimbit.
