2016-07-25 21 views
-1

Ich habe eine Remote-Mainframe-DB2-Datenbank, für die ich Spitznamen in meinem DB2-Server erstellt habe.Wählen Sie nicht funktioniert nach dem Setzen wo Bedingung in Spitznamen?

Problem ist, wie unten -

Wenn ich Abfrage

SELECT * FROM LNICKNAME.TABLE laufen - Es läuft und ich kann alle Spalten bekommen.

aber wenn ich unter Abfrage ausführen, gibt es mir keine Ausgabe und läuft weiter.

SELECT * FROM LNICKNAME.TABLE a where a.columnB = 'ADH00040'; 

Also technisch funktioniert es nicht, wenn ich irgendwelche wo Bedingung hinzufüge.

+0

Versuchen Sie 'WHERE 1 = 1' – nilsman

+0

ja 1 = 1 funktioniert..aber nicht mit der Spalte Name Bedingung. –

+0

Bearbeiten Sie die Frage, um zu zeigen, wie Sie auf meinem DB2-Server Kurznamen erstellt haben. –

Antwort

0

Es scheint nicht, als wäre ein Fehler mit Ihrer SELECT-Anweisung. Also gehe ich davon aus, dass eine von zwei Dinge passieren:

Senario 1:

Die Datei ist sehr groß und es gibt kein Index auf columnB. Wenn dies der Fall ist, würde es lange dauern, da die DB jeden Datensatz durchlesen müsste und prüfen würde, ob columnB = 'ADH00040' ist. Um zu sehen, wie viele Datensätze in der Tabelle sind laufen nur einen Zähler auf dem Tisch

SELECT COUNT(*) FROM LNICKNAME.BMS_TABLE 

Senario 2:

Etwas oder jemand trennen die Verbindung, bevor Ihre Anfrage abgeschlossen ist. Ich weiß, dass Sie die CPU-Zeit begrenzen können, die ein iSeries-Job erlaubt ist, bevor er zwangsweise beendet wird (CHGJOB CPUTIME (60000)). Gibt es keine Form eines Jobprotokolls, das Sie mit uns teilen könnten?

+0

Senario 1: Ich weiß, Datei ist groß .. Ich meine, es hat mehr als eine Million Rekord, aber wenn ich mit der tatsächlichen Tabelle verbinden als mit Spitznamen ist in der Lage, darauf zuzugreifen, so glaube ich nicht, es wird funktionieren. Für Senario 2: --- Wenn etwas oder jemand trennt, dann wird es mir nicht erlauben, die Select-Abfrage auch auszuführen .. –

+0

@BibekanandaPanda Nicht unbedingt wahr. Ein einfacher SELECT kann leicht ausgeführt werden, wenn WHERE-Klauseln nicht ausgeführt werden. Eine nicht indizierte WHERE-Klausel kann zu lang andauernden temporären Indexerstellungen führen, die zu langen Verzögerungen führen. Wie lange hast du gewartet? – user2338816

+0

@ user2338816 Diese Abfrage funktioniert mit wo, wenn ich versuche, auf die entfernte Datenbank über SQL-Tool wie Dbeaver zugreifen .. aber durch Nickname funktioniert es nicht. –

0

Sind Sie sicher, dass Ihr Wert in Ihrer Tabelle ist?

versuchen ein wie:

SELECT * FROM LNICKNAME.TABLE ein, wo a.columnB like '% ADH00040%';