Rumah pangkalan data tutorial mysql 如何高效能拆分一个字段为多行

如何高效能拆分一个字段为多行

Jun 07, 2016 pm 02:53 PM
satu bagaimana Padang Berpisah Kecekapan tinggi

如何高效能拆分一个字段为多行 我本意是将表中的一个字段拆分成多行,例如aaa,bbb拆分为 aaa bbb 现在测试如下: [sql] with t1 as ( select 3 c1,eee,fff,ggg c2 from dual UNION ALL select 2 c1,ccc,ddd c2 from dual UNION ALL SELECT 1 c1,aaa,bbb c2 F


如何高效能拆分一个字段为多行

 

我本意是将表中的一个字段拆分成多行,例如'aaa,bbb'拆分为

'aaa'

'bbb'

现在测试如下:

 

[sql] 

with t1 as   

(  

     select 3 c1,'eee,fff,ggg' c2 from dual UNION ALL   

     select 2 c1,'ccc,ddd' c2 from dual UNION ALL   

     SELECT 1 c1,'aaa,bbb' c2 FROM dual  

)  

  

select c1,LEVEL,replace(regexp_substr(c2,'[^,]+',1,level),',',' ') c2  

from t1   

connect BY level

order by c1,level  

  www.2cto.com  

返回结果如下:

[sql] 

C1 LEVEL C2  

1 1 aaa  

1 2 bbb  

1 2 bbb  

1 2 bbb  

2 1 ccc  

2 2 ddd  

2 2 ddd  

2 2 ddd  

3 1 eee  

3 2 fff  

3 2 fff  

3 2 fff  

3 3 ggg  

3 3 ggg  

3 3 ggg  

3 3 ggg  

3 3 ggg  

3 3 ggg  

3 3 ggg  

3 3 ggg  

3 3 ggg  

  www.2cto.com  

--======================================================

看起来connect by之后产生了大量重复数据,于是加入distinct后取得正确数据。

反思:

我构造的测试数据仅仅只有三行,最长的拆分资料仅3段'eee,fff,ggg',却产生了21笔资料。如果测试数据增多,或者需拆分的段

数量增多,那么connect by产生的数据将是海量的。

用此种方法实际处理生产库数据时,问题马上显现出来,仅17笔资料,最长拆分字段为8段,竟然产生了738万笔资料,尽管我使用

了distinct,依然慢的很。

 

解决方案:用Join方式取代connect by方式

 

[sql] 

with t1 as   

(  

     select 3 c1,'eee,fff,ggg' c2 from dual UNION ALL   

     select 2 c1,'ccc,ddd' c2 from dual UNION ALL   

     SELECT 1 c1,'aaa,bbb' c2 FROM dual  

)  

  

SELECT c1,  

       substr(t.ca,  

              instr(t.ca, ',', 1, d.lv) + 1,  

              instr(t.ca, ',', 1, d.lv + 1) -  

              (instr(t.ca, ',', 1, d.lv) + 1)) AS d  

  FROM (SELECT c1,  

               ',' || c2 || ',' AS ca,  

               length(c2 || ',') - nvl(length(REPLACE(c2, ',')), 0) AS cnt  

          FROM t1) t,  

       (select rownum lv from  

        (select max(length(c2 || ',') - nvl(length(REPLACE(c2, ',')), 0)) mlc from t1)   

         connect by level

       )d         

WHERE d.lv

ORDER BY c1  

  www.2cto.com  

结论:

对于表资料只有一笔的时候,用connect by一般不会有什么问题。但如果表中资料是多笔,则connect by会产生海量的重复资料。

 

用join方式可解决此类问题。

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bermula dengan cepat: Teknik penggabungan dan pemisahan tatasusunan JSON dalam Java. Bermula dengan cepat: Teknik penggabungan dan pemisahan tatasusunan JSON dalam Java. Sep 06, 2023 am 10:21 AM

Bermula dengan cepat: Teknik penggabungan dan pemisahan tatasusunan JSON dalam Java Dalam pembangunan perisian moden, format dan penghantaran data telah menjadi semakin penting. Antaranya, JSON (JavaScriptObjectNotation) ialah format data yang biasa digunakan, terutamanya sesuai untuk interaksi hadapan dan belakang dan penyimpanan data. Dalam pembangunan Java, kita sering perlu berurusan dengan objek JSON dan tatasusunan JSON. Artikel ini menerangkan cara untuk menggabungkan dan memisahkan tatasusunan JSON dalam Java, bersama-sama dengan petua dan contoh untuk melaksanakan operasi ini.

Bagaimana untuk menggunakan PHP ZipArchive untuk menggabungkan dan memisahkan berbilang pakej termampat? Bagaimana untuk menggunakan PHP ZipArchive untuk menggabungkan dan memisahkan berbilang pakej termampat? Jul 21, 2023 am 10:17 AM

Bagaimana untuk menggunakan PHPZipArchive untuk menggabungkan dan memisahkan berbilang pakej termampat? Gambaran Keseluruhan: Semasa proses pembangunan, kadangkala kita perlu menggabungkan berbilang pakej mampat menjadi satu, atau membahagikan pakej mampat kepada beberapa pakej. PHP menyediakan sambungan ZipArchive untuk menyelesaikan operasi ini dengan mudah. Artikel ini akan memperkenalkan cara menggunakan PHPZipArchive untuk menggabungkan dan memisahkan berbilang pakej termampat. Menggabungkan berbilang arkib Pertama, kita perlu mencipta arkib baharu dan membukanya. Kemudian, lintasan gelung perlu

Bagaimana untuk menentukan sama ada medan kosong dalam PHP? Bagaimana untuk menentukan sama ada medan kosong dalam PHP? Mar 20, 2024 pm 03:09 PM

PHP ialah bahasa skrip yang digunakan secara meluas dalam pembangunan laman web Bagi pembangun, selalunya perlu untuk menentukan sama ada medan itu kosong. Dalam PHP, menentukan sama ada medan kosong boleh dicapai melalui beberapa kaedah mudah. Artikel ini akan memperkenalkan cara untuk menentukan sama ada medan kosong dalam PHP dan memberikan contoh kod khusus untuk rujukan anda. Dalam PHP, anda biasanya boleh menggunakan fungsi kosong() atau fungsi isset() untuk menentukan sama ada medan kosong. Seterusnya, kami memperkenalkan penggunaan kedua-dua fungsi ini masing-masing. Gunakan fungsi kosong().

Adakah terdapat masa depan untuk pekerjaan dalam farmasi klinikal di Universiti Perubatan Harbin? (Apakah prospek pekerjaan untuk farmasi klinikal di Universiti Perubatan Harbin?) Adakah terdapat masa depan untuk pekerjaan dalam farmasi klinikal di Universiti Perubatan Harbin? (Apakah prospek pekerjaan untuk farmasi klinikal di Universiti Perubatan Harbin?) Jan 02, 2024 pm 08:54 PM

Apakah prospek pekerjaan farmasi klinikal di Universiti Perubatan Harbin Walaupun situasi pekerjaan negara tidak optimistik, graduan farmaseutikal masih mempunyai prospek pekerjaan yang baik. Secara keseluruhannya, bekalan graduan farmaseutikal adalah kurang daripada permintaan Syarikat farmaseutikal dan kilang farmaseutikal adalah saluran utama untuk menyerap graduan tersebut. Menurut laporan, dalam beberapa tahun kebelakangan ini, nisbah bekalan-permintaan untuk pelajar siswazah dalam jurusan seperti persediaan farmaseutikal dan kimia perubatan semula jadi telah mencapai 1:10. Arah pekerjaan jurusan farmasi klinikal: Selepas tamat pengajian, pelajar jurusan perubatan klinikal boleh melibatkan diri dalam rawatan perubatan, pencegahan, penyelidikan perubatan, dsb. dalam unit perubatan dan kesihatan, penyelidikan perubatan dan jabatan lain. Jawatan pekerjaan: Wakil perubatan, wakil jualan farmaseutikal, wakil jualan, pengurus jualan, pengurus jualan wilayah, pengurus pelaburan, pengurus produk, pakar produk, jururawat

NoSuchFieldError dalam Java - Penyelesaian kepada medan tidak ditemui NoSuchFieldError dalam Java - Penyelesaian kepada medan tidak ditemui Jun 25, 2023 am 11:33 AM

NoSuchFieldError dalam Java - Penyelesaian kepada medan tidak ditemui Java ialah bahasa pengaturcaraan peringkat tinggi yang digunakan secara meluas dalam aplikasi peringkat perusahaan dan pemprosesan data berskala besar. Semasa proses pembangunan Java, ralat seperti NoSuchFieldError mungkin berlaku. Ralat ini bermakna JVM tidak dapat mencari medan yang diperlukan pada masa jalan. Dalam artikel ini, kami akan melihat NoSuchFieldError dengan lebih mendalam dan cara menyelesaikannya. Apakah itu NoSuchFieldE

Apakah maksud medan mysql? Apakah maksud medan mysql? Jul 10, 2023 pm 02:14 PM

Medan mysql ialah lajur jenis dan panjang tertentu dalam jadual pangkalan data mysql yang digunakan untuk menyimpan data. Dalam MySQL, setiap medan mesti mempunyai jenis data tertentu Jenis data biasa termasuk integer, nombor titik terapung, rentetan, tarikh dan masa ini menentukan data yang boleh disimpan oleh MySQL dalam setiap medan.

Bagaimana untuk memuat turun imej win10 dengan cepat Bagaimana untuk memuat turun imej win10 dengan cepat Jan 07, 2024 am 11:33 AM

Baru-baru ini, beberapa rakan melaporkan cara memuat turun fail imej win10 Kerana terdapat banyak fail imej di pasaran, apakah yang perlu saya lakukan jika saya ingin mencari fail biasa untuk dimuat turun? Hari ini, editor telah membawakan anda pautan untuk memuat turun imej dan langkah penyelesaian terperinci Mari kita lihat bersama-sama. muat turun pantas imej win10 dan pautan muat turun tutorial pemasangan >>> Sistem Home Ghostwin101909 imej versi 64-bit v2019.11<<<>>>Imej Win10 64-bit v2019.07<<<>>>Imej Win10 32-bit v2019. 07<< <1. Cari melalui Internet

Bagaimana untuk membersihkan folder temp Bagaimana untuk membersihkan folder temp Feb 22, 2024 am 09:15 AM

Cara membersihkan folder temp Semasa kami menggunakan komputer, fail sementara (fail temp) akan terkumpul secara beransur-ansur. Fail sementara ini dijana apabila kami menggunakan komputer, seperti fail cache semasa menyemak imbas web, fail sementara semasa pemasangan perisian, dsb. Kegagalan untuk membersihkan folder temp untuk masa yang lama mungkin menduduki sejumlah besar ruang cakera dan menjejaskan kelajuan komputer. Oleh itu, membersihkan folder temp dengan kerap adalah langkah yang perlu untuk mengekalkan prestasi komputer. Di bawah, kami akan memperkenalkan beberapa cara mudah untuk membersihkan folder temp. Kaedah 1: Bersihkan t secara manual

See all articles