Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   MySQl-Query läuft "ewig" (https://www.delphipraxis.net/116653-mysql-query-laeuft-ewig.html)

marabu 7. Jul 2008 14:50

Re: MySQl-Query läuft "ewig"
 
Hi,

wenn du reservierte Wörter als Feldnamen benutzt, dann musst du die Bezeichner korrekt quoten:

SQL-Code:
ALTER TABLE de12_conquer
ADD PRIMARY KEY (villageid, `timestamp`)
Freundliche Grüße

dispy 11. Jul 2008 21:27

Re: MySQl-Query läuft "ewig"
 
uh ganz verpennt..... thx :)

EDIT: der neue Primary-Key bringt auch keine Lösung: der Query läuft trotzdem ewig

MfG
dispy

omata 12. Jul 2008 14:25

Re: MySQl-Query läuft "ewig"
 
SQL-Code:
SELECT c.timestamp AS time,
       c.new_owner AS new_owner_id
FROM de12_conquer c
INNER JOIN de12_tribe x
  ON   c.new_owner = x.id
     OR c.old_owner = x.id
WHERE (c.timestamp > 0 && c.timestamp < 1213647029734)
  AND (x.ally = 37038)
ORDER BY c.timestamp DESC LIMIT 50

dispy 12. Jul 2008 18:16

Re: MySQl-Query läuft "ewig"
 
Zitat:

Zitat von omata
SQL-Code:
SELECT c.timestamp AS time,
       c.new_owner AS new_owner_id
FROM de12_conquer c
INNER JOIN de12_tribe x
  ON   c.new_owner = x.id
     OR c.old_owner = x.id
WHERE (c.timestamp > 0 && c.timestamp < 1213647029734)
  AND (x.ally = 37038)
ORDER BY c.timestamp DESC LIMIT 50

Der läuft auch ewig durch.
Aber trotzdem danke

MfG
dispy

marabu 12. Jul 2008 18:56

Re: MySQl-Query läuft "ewig"
 
Hallo dispy,

lass mal den Range-Check für die Spalte "timestamp" in der WHERE-Klausel weg - da stehen blödsinnige Werte drin, wenn ich das richtig sehe.

Freundliche Grüße

dispy 12. Jul 2008 20:09

Re: MySQl-Query läuft "ewig"
 
Zitat:

Zitat von marabu
Hallo dispy,

lass mal den Range-Check für die Spalte "timestamp" in der WHERE-Klausel weg - da stehen blödsinnige Werte drin, wenn ich das richtig sehe.

Freundliche Grüße

Moin,
ja, so sind die blödsinnig. Aber im späteren Einsatz kommen da vernünftige Werte rein.

MFG
dispy

omata 12. Jul 2008 21:44

Re: MySQl-Query läuft "ewig"
 
Neuer Versuch...
SQL-Code:
SELECT timestamp AS time,
       new_owner AS new_owner_id
FROM de12_conquer
WHERE (timestamp > 0 && timestamp < 1213647029734)
  AND (   new_owner IN (SELECT id
                        FROM de12_tribe
                        WHERE ally = 37038)
       OR old_owner IN (SELECT id
                        FROM de12_tribe
                        WHERE ally = 37038))
ORDER BY timestamp DESC LIMIT 50
oder so...
SQL-Code:
SELECT timestamp AS time,
       new_owner AS new_owner_id
FROM de12_conquer c
WHERE (timestamp > 0 && timestamp < 1213647029734)
  AND EXISTS (SELECT *
              FROM de12_tribe
              WHERE ally = 37038
                AND (   id = c.new_owner
                     OR id = c.old_owner))
ORDER BY timestamp DESC LIMIT 50
Wieviel Zeilen ergibt das Folgende überhaupt?
SQL-Code:
SELECT id
FROM de12_tribe
WHERE ally = 37038
Geht es schneller ohne den timestamp und die Sortierung?

dispy 13. Jul 2008 19:24

Re: MySQl-Query läuft "ewig"
 
Zitat:

Wieviel Zeilen ergibt das Folgende überhaupt?
nen leeres Resultat - die ID hat sich geändert.
MIt der aktuellen ID genau 48.



1ter query: läuft ewig
2ter Query: auch ewig

Zitat:

Geht es schneller ohne den timestamp und die Sortierung?
Ohne geht es auch nicht von daher is das schnurzpipsegal.Sollte aber logischwerweise länger brauchen.

MFG
dispy


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:20 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz