Frage an die Datenbankler hier: wird bei Nutzung Substr(blubb,1,n) ein full table scan gemacht?
Irgendwie läuft mein SQL auf Prod schon 5min ohne Chance auf abbruch *hust*
<-- Killerspielespieler Geh doch zum MediaMarkt und lass dich da beraten...
Beiträge gesamt: 6824 | Durchschnitt: 1 Postings pro Tag Registrierung: Nov. 2007 | Dabei seit: 6226 Tagen | Erstellt: 10:18 am 25. Okt. 2013
Intel Core i9 3600 MHz @ 5200 MHz 78°C mit 1.552 Volt
Ja, wenn du keinen Index verwendest, wird bei Where Substr(blubb,1,n) = 'XYZ' ein full table scan durchgeführt.
Hardware News lesen * Unterhalten * Smarthome und Gadgets Übertakten, Modding und Testberichte * Fanartikel kaufen
Beiträge gesamt: 170972 | Durchschnitt: 20 Postings pro Tag Registrierung: April 2001 | Dabei seit: 8619 Tagen | Erstellt: 13:16 am 25. Okt. 2013
Hmm... Ich habe ein Feld KDNR_BLA CHAR(12). Auf diesem Feld liegt ein Index xyz. In einer anderen Tabelle habe ich eine KDNR CHAR(10).
Wenn sich KDNR_BLA aus der KDNR + '00' zusammensetzt, dann kann ich einen JOIN
SELECT * FROM A INNER JOIN B ON A.KDNR_BLA = B.KDNR||00
ohne Probleme machen. Wenn jetzt die letzten zwei Zeichen von KDNR_BLA unbekannt sind, bleibt mir nichts anderes übrig als
SELECT * FROM A INNER JOIN B ON SUBSTR(A.KDNR_BLA,1,10) = B.KDNR
zum joinen zu verwenden. Ich hätte jetzt eigentlich bei einem CHAR Feld erzwartet, dass der Index auch bei Nutzung der ersten Zeichen herangezogen wird. Dass er bei SUBSTR(A.KDNR,2,3) nicht funktioniert ist klar, aber ab der ersten Stelle?!
<-- Killerspielespieler Geh doch zum MediaMarkt und lass dich da beraten...
Beiträge gesamt: 6824 | Durchschnitt: 1 Postings pro Tag Registrierung: Nov. 2007 | Dabei seit: 6226 Tagen | Erstellt: 15:01 am 25. Okt. 2013
Intel Core i9 3600 MHz @ 5200 MHz 78°C mit 1.552 Volt
Dann versuche es einfach mal mit LEFT, das sollte deutlich schneller gehen.
Hardware News lesen * Unterhalten * Smarthome und Gadgets Übertakten, Modding und Testberichte * Fanartikel kaufen
Beiträge gesamt: 170972 | Durchschnitt: 20 Postings pro Tag Registrierung: April 2001 | Dabei seit: 8619 Tagen | Erstellt: 18:16 am 25. Okt. 2013
Jo, lief besser ... auch wenn er sich bei der Masse der Daten trotzdem noch recht schwer tut
<-- Killerspielespieler Geh doch zum MediaMarkt und lass dich da beraten...
Beiträge gesamt: 6824 | Durchschnitt: 1 Postings pro Tag Registrierung: Nov. 2007 | Dabei seit: 6226 Tagen | Erstellt: 8:12 am 30. Okt. 2013
Hmm.. ich glaube, ich war durch Oracle geblendet. Bei Oracle funktioniert substr() super, dafür gibt es gar kein left(). Bei db2 funktioniert substr() mehr schlecht als recht und dafür funktioniert left() super.
Falls es wen interessiert
<-- Killerspielespieler Geh doch zum MediaMarkt und lass dich da beraten...
Beiträge gesamt: 6824 | Durchschnitt: 1 Postings pro Tag Registrierung: Nov. 2007 | Dabei seit: 6226 Tagen | Erstellt: 16:56 am 30. Okt. 2013
Copyright 1999 - 2024 by www.ocinside.de - All rights reserved.
Unser PC Forum verwendet Cookies für einen optimalen Service. Durch die Nutzung dieser Webseite erklären Sie sich damit einverstanden, dass wir personenbezogene Daten wie z.B. die IP-Adresse speichern und wir zusammen mit Drittanbietern Cookies verwenden, um personalisierte Anzeigen zur interessengerechten Werbung und weitere externe Inhalte anzuzeigen. Einverstanden? Ja / Nein ImpressumDatenschutzEinstellungen