Heim Datenbank MySQL-Tutorial 如何高效能拆分一个字段为多行

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

Jun 07, 2016 pm 02:53 PM
eins 如何 字段 拆分 高效能

如何高效能拆分一个字段为多行 我本意是将表中的一个字段拆分成多行,例如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方式可解决此类问题。

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Schneller Einstieg: Techniken zum Zusammenführen und Aufteilen von JSON-Arrays in Java. Schneller Einstieg: Techniken zum Zusammenführen und Aufteilen von JSON-Arrays in Java. Sep 06, 2023 am 10:21 AM

Schneller Einstieg: JSON-Array-Zusammenführungs- und Aufteilungstechniken in Java In der modernen Softwareentwicklung sind Datenformat und -übertragung immer wichtiger geworden. Unter diesen ist JSON (JavaScriptObjectNotation) ein häufig verwendetes Datenformat, das sich besonders für Front-End- und Back-End-Interaktion und Datenspeicherung eignet. In der Java-Entwicklung müssen wir uns häufig mit JSON-Objekten und JSON-Arrays befassen. In diesem Artikel wird erläutert, wie Sie JSON-Arrays in Java zusammenführen und aufteilen, sowie Tipps und Beispiele für die Implementierung dieser Vorgänge.

Wie verwende ich PHP ZipArchive, um mehrere komprimierte Pakete zusammenzuführen und aufzuteilen? Wie verwende ich PHP ZipArchive, um mehrere komprimierte Pakete zusammenzuführen und aufzuteilen? Jul 21, 2023 am 10:17 AM

Wie verwende ich PHPZipArchive, um mehrere komprimierte Pakete zusammenzuführen und aufzuteilen? Überblick: Während des Entwicklungsprozesses müssen wir manchmal mehrere komprimierte Pakete zu einem zusammenführen oder ein komprimiertes Paket in mehrere aufteilen. PHP bietet die ZipArchive-Erweiterung, um diese Vorgänge einfach durchzuführen. In diesem Artikel wird erläutert, wie Sie mit PHPZipArchive mehrere komprimierte Pakete zusammenführen und aufteilen. Mehrere Archive zusammenführen Zuerst müssen wir ein neues Archiv erstellen und es öffnen. Dann muss die Schleife durchlaufen werden

Gibt es eine Zukunft für eine Beschäftigung in der klinischen Pharmazie an der Harbin Medical University? (Wie sind die Beschäftigungsaussichten für die klinische Pharmazie an der Harbin Medical University?) Gibt es eine Zukunft für eine Beschäftigung in der klinischen Pharmazie an der Harbin Medical University? (Wie sind die Beschäftigungsaussichten für die klinische Pharmazie an der Harbin Medical University?) Jan 02, 2024 pm 08:54 PM

Wie sind die Beschäftigungsaussichten der klinischen Pharmazie an der Harbin Medical University? Obwohl die Beschäftigungssituation im Land nicht optimistisch ist, haben Absolventen der Pharmazie immer noch gute Beschäftigungsaussichten. Insgesamt ist das Angebot an Pharmaabsolventen geringer als die Nachfrage. Pharmaunternehmen und Pharmafabriken sind die Hauptkanäle für die Aufnahme solcher Absolventen. Auch die Nachfrage nach Talenten in der Pharmaindustrie wächst stetig. Berichten zufolge hat das Angebot-Nachfrage-Verhältnis für Doktoranden in den Hauptfächern Pharmazeutische Präparate und Naturmedizinische Chemie in den letzten Jahren sogar 1:10 erreicht. Beschäftigungsrichtung des Hauptfachs „Klinische Pharmazie“: Nach dem Abschluss können Studierende des Hauptfachs „Klinische Medizin“ in medizinischen und Gesundheitsabteilungen, in der medizinischen Forschung und anderen Abteilungen in der medizinischen Behandlung, Prävention, medizinischen Forschung usw. tätig werden. Beschäftigungspositionen: Medizinischer Vertreter, Pharma-Vertriebsmitarbeiter, Vertriebsmitarbeiter, Vertriebsleiter, Regionaler Vertriebsleiter, Investmentmanager, Produktmanager, Produktspezialist, Krankenpfleger

Wie kann man in PHP feststellen, ob ein Feld leer ist? Wie kann man in PHP feststellen, ob ein Feld leer ist? Mar 20, 2024 pm 03:09 PM

PHP ist eine in der Website-Entwicklung weit verbreitete Skriptsprache. Für Entwickler ist es oft notwendig, festzustellen, ob ein Feld leer ist. In PHP kann mit einigen einfachen Methoden festgestellt werden, ob ein Feld leer ist. In diesem Artikel erfahren Sie, wie Sie feststellen können, ob ein Feld in PHP leer ist, und stellen spezifische Codebeispiele als Referenz bereit. In PHP können Sie normalerweise die Funktion empty() oder isset() verwenden, um festzustellen, ob ein Feld leer ist. Als nächstes stellen wir die Verwendung dieser beiden Funktionen vor. Verwenden Sie die Funktion empty()

NoSuchFieldError in Java – Lösung für Feld nicht gefunden NoSuchFieldError in Java – Lösung für Feld nicht gefunden Jun 25, 2023 am 11:33 AM

NoSuchFieldError in Java – Lösung für das nicht gefundene Feld Java ist eine höhere Programmiersprache, die häufig in Unternehmensanwendungen und der Datenverarbeitung im großen Maßstab verwendet wird. Während des Entwicklungsprozesses von Java können Fehler wie NoSuchFieldError auftreten. Dieser Fehler bedeutet, dass die JVM das erforderliche Feld zur Laufzeit nicht finden kann. In diesem Artikel werfen wir einen tieferen Blick auf NoSuchFieldError und wie man es beheben kann. Was ist NoSuchFieldE?

Was bedeutet MySQL-Feld? Was bedeutet MySQL-Feld? Jul 10, 2023 pm 02:14 PM

Ein MySQL-Feld ist eine Spalte eines bestimmten Typs und einer bestimmten Länge in einer MySQL-Datenbanktabelle, die zum Speichern von Daten verwendet wird. In MySQL muss jedes Feld einen bestimmten Datentyp haben, darunter Ganzzahlen, Gleitkommazahlen, Zeichenfolgen, Datumsangaben und Uhrzeiten.

So laden Sie das Win10-Image schnell herunter So laden Sie das Win10-Image schnell herunter Jan 07, 2024 am 11:33 AM

Kürzlich haben einige Freunde berichtet, wie man Win10-Bilddateien herunterlädt. Da es so viele Bilddateien auf dem Markt gibt, was soll ich tun, wenn ich eine normale Datei zum Herunterladen finden möchte? Heute hat Ihnen der Herausgeber den Link zum Herunterladen des Bildes und die detaillierten Lösungsschritte bereitgestellt. Schauen wir uns diese gemeinsam an. Win10-Image-Schnelldownload und Installations-Tutorial-Download-Link >>> System Home Ghostwin101909-Image 64-Bit-Version v2019.11<<<>>>Win10-Image 64-Bit v2019.07<<<>>>Win10-Image 32-Bit v2019. 07<< <1. Suchen Sie im Internet

So bereinigen Sie den temporären Ordner So bereinigen Sie den temporären Ordner Feb 22, 2024 am 09:15 AM

So bereinigen Sie den temporären Ordner. Während wir den Computer verwenden, sammeln sich nach und nach temporäre Dateien (temporäre Dateien) an. Diese temporären Dateien werden generiert, wenn wir den Computer nutzen, z. B. Cache-Dateien beim Surfen im Internet, temporäre Dateien bei der Installation von Software usw. Wenn der temporäre Ordner über einen längeren Zeitraum nicht bereinigt wird, kann dies viel Speicherplatz beanspruchen und die Geschwindigkeit des Computers beeinträchtigen. Daher ist das regelmäßige Bereinigen des temporären Ordners ein notwendiger Schritt, um die Computerleistung aufrechtzuerhalten. Im Folgenden stellen wir einige einfache Möglichkeiten zum Bereinigen des temporären Ordners vor. Methode 1: Manuell reinigen

See all articles