Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Meldung mit &&

  1. #1
    Sauerkraut ist offline Benutzer
    Registriert seit
    24.01.2007
    Beiträge
    89

    Standard Meldung mit &&

    Hi,

    ich bekomme die Meldung:

    NOTICE: LWGEOM_gist_joinsel called with arguments that are not column references

    wenn ich folgende Abfrage durchführe. Ich werde jetzt nicht ganz schlau daraus was damit gmemeint ist. Auf anderen Foren im Netz steht, dass man das igonieren kann, aber wie kann man das vermeiden oder optimieren?

    Meine Abfrage ist:
    Code:
    select s1.gid from tab_streets as s1 inner join navteq_highway as s2 on 
    (startpoint(s1.the_geom) && endpoint(s2.the_geom));

  2. #2
    fristo ist offline Super-Moderator
    Registriert seit
    08.12.2005
    Ort
    Raum Frankfurt/Main
    Beiträge
    668

    Standard

    Was spricht eigentlich dagegen, in der Doku einmal nachzulesen, ob der Syntax des SQL-Befehls richtig ist?



    mfg

    fristo

  3. #3
    Sauerkraut ist offline Benutzer
    Registriert seit
    24.01.2007
    Beiträge
    89

    Standard

    Der Syntax ist soweit korrekt, der Befehl wird auch ausgeführt und das Ergebnis ist korrekt. Aber nur scheint die nicht der optimale Weg der Abfrage zu sein oder es hängt mit der Indizierung zusammen

    Mein Explain ist folgender:

    QUERY PLAN
    Nested Loop (cost=0.00..15914.15 rows=6229 width=4)
    -> Seq Scan on street s1 (cost=0.00..1192.95 rows=35295 width=36)
    -> Index Scan using endpoint_t_gist on street s2 (cost=0.00..0.40 rows=1 width=32)
    Index Cond: (startpoint(s1.the_geom) && endpoint(s2.the_geom))
    Filter: (startpoint(s1.the_geom) && endpoint(s2.the_geom))

  4. #4
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von Sauerkraut Beitrag anzeigen
    Der Syntax ist soweit korrekt, der Befehl wird auch ausgeführt und das Ergebnis ist korrekt.
    Es ist ein Hinweis.

    Aber nur scheint die nicht der optimale Weg der Abfrage zu sein oder es hängt mit der Indizierung zusammen
    Hilft Dir [postgis-users] LWGEOM_gist_joinsel called with arguments that are not column references weiter?

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  5. #5
    fristo ist offline Super-Moderator
    Registriert seit
    08.12.2005
    Ort
    Raum Frankfurt/Main
    Beiträge
    668

    Standard

    Zitat Zitat von Sauerkraut Beitrag anzeigen
    Der Syntax ist soweit korrekt, der Befehl wird auch ausgeführt und das Ergebnis ist korrekt. Aber nur scheint die nicht der optimale Weg der Abfrage zu sein oder es hängt mit der Indizierung zusammen

    Mein Explain ist folgender:

    QUERY PLAN
    Nested Loop (cost=0.00..15914.15 rows=6229 width=4)
    -> Seq Scan on street s1 (cost=0.00..1192.95 rows=35295 width=36)
    -> Index Scan using endpoint_t_gist on street s2 (cost=0.00..0.40 rows=1 width=32)
    Index Cond: (startpoint(s1.the_geom) && endpoint(s2.the_geom))
    Filter: (startpoint(s1.the_geom) && endpoint(s2.the_geom))
    Du hast Recht, wenn man sich auf dem Standpunkt stellt, das man eine NOTICE von der Datenbank einfach ignorieren sollte. Und die NOTICE besagt doch, dass eine "column references" gefordert ist. Die Frage ist jetzt, wer hat Recht, die Datenbank mit der Meldung oder Du. Bevor du nochmals hier ein QUERY PLAN schickst, solltest Du besser den Syntax für den SQL-Befehl in der Doku nachlesen, insbesondere die ON-Klausel für den JOIN-Befehl. Der entspricht in dem SQL-Befehl nicht den Vorschriften!



    mfg

    fristo

  6. #6
    Sauerkraut ist offline Benutzer
    Registriert seit
    24.01.2007
    Beiträge
    89

    Standard

    Sorry, jetzt verstehe ich was der Fehler war. Hatte ein Brett vor dem Kopf

    Das && raus und dafür ein = einsetzen behebt das ganze.
    Geändert von Sauerkraut (26.09.2007 um 13:01 Uhr)

  7. #7
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von fristo Beitrag anzeigen
    Du hast Recht, wenn man sich auf dem Standpunkt stellt, das man eine NOTICE von der Datenbank einfach ignorieren sollte. Und die NOTICE besagt doch, dass eine "column references" gefordert ist. Die Frage ist jetzt, wer hat Recht, die Datenbank mit der Meldung oder Du. Bevor du nochmals hier ein QUERY PLAN schickst, solltest Du besser den Syntax für den SQL-Befehl in der Doku nachlesen, insbesondere die ON-Klausel für den JOIN-Befehl. Der entspricht in dem SQL-Befehl nicht den Vorschriften!



    mfg

    fristo
    Laaangsam. Hier ist PostGIS im Spiel. Das '&&' ist ein PostGIS-Operator. Und eine NOTICE ist kein Fehler, nur ein Hinweis. Und für ON muß man nicht zwingend eine Column der beteiligten Tabellen nehmen:

    Code:
    test=*# select * from foo;
            w
    ------------------
     das ist ein test
     bar
    (2 rows)
    
    test=*# select * from foo join foo f1 on(select 'true'::bool);
            w         |        w
    ------------------+------------------
     das ist ein test | das ist ein test
     das ist ein test | bar
     bar              | das ist ein test
     bar              | bar
    (4 rows)
    Über Sinn und Unsinn kann man geteilter Meinung sein.

    Aber:
    Auch wenn ich von PostGIS keine Ahnung habe: Dein Gemotze ist für den Fragesteller offensichtlich nicht helfend. Zeig ihm doch, wie er die NOTICE wegbekommt.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  8. #8
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von Sauerkraut Beitrag anzeigen
    Sorry, jetzt verstehe ich was der Fehler war. Hatte ein Brett vor dem Kopf

    Das && raus und dafür ein = einsetzen behebt das ganze.
    Jetzt bin ich neugierig:
    - selbes Resultat?
    - selber Plan?

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  9. #9
    Gisman ist offline Erfahrener Benutzer
    Registriert seit
    20.01.2006
    Ort
    Pfalz
    Beiträge
    794

    Standard

    Das '&&' verschneidet die beiden Boundingboxes der Geometrien und liefert ein True, wenn sie sich überschneiden. In diesem Falle wurden Boundingboxen von Punkten verglichen, das geht wohl anscheinend, ist aber eher unsinnig, da es langsamer ist als der direkte Vergleich der Punkte. Es müssten ja erst aus jedem Punkt eine Boundingbox(4Punkte ) erzeugt werden und die dann miteinander verglichen werden (rel. teurer räumlicher Vergleich). So würde ich mir das zumindest erklären.
    Angenehm, das PostGIS hier Bescheid sagt.

    CU Uwe
    Have a lot of fun!

  10. #10
    Sauerkraut ist offline Benutzer
    Registriert seit
    24.01.2007
    Beiträge
    89

    Standard

    Also ich würde gerne ein Ergbnis mit dem '=' Vergleich hier ins Forum stellen, aber die Abfrage dauert mir zu lange
    Also im Kostenvergleich zeigt sich das der '&&' dem '=' wesentlich geschickter ist. Also wenn Interesse besteht kann ich auch gerne ein Explain mit den Kosten reinstellen.
    Also ich hätte auch gedacht das der Bildvergleich aufwendiger ist.

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Seltsamme Meldung
    Von karl_ha im Forum Konfiguration
    Antworten: 11
    Letzter Beitrag: 09.12.2009, 10:22
  2. Antworten: 2
    Letzter Beitrag: 08.10.2009, 14:12
  3. warning meldung am anfang!
    Von btala001 im Forum Installation von PostgreSQL
    Antworten: 0
    Letzter Beitrag: 05.10.2006, 13:36

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum