YourWBB


yourWBB » yourWBB Misc * » Das Proggen » MySQL und PHP » sql abfrage performance » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag 3.125 Views | | Thema zu Favoriten hinzufügen

Neues Thema erstellen Antwort erstellen

Zum Ende der Seite springen sql abfrage performance
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
CurryWorld CurryWorld ist männlich
Mitglied


Dabei seit: 30.04.04
Beiträge: 108
Herkunft: Gelsenkirchen
Forenversion: 2.1.3

 sql abfrage performance Antworten Zitieren Editieren Melden       UP

Hallo

also einmal hätte ich die Datenbankstruktur:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
CREATE TABLE `kalender` (
`id` smallint(10) NOT NULL auto_increment,
`was` varchar(255) NOT NULL default '',
`wo` varchar(255) NOT NULL default '',
`wann` time NOT NULL,
`offen` enum('0','1') NOT NULL default '1',
`kommentar` text NOT NULL,
`tag` smallint(2) NOT NULL default '0',
`monat` smallint(2) NOT NULL default '0',
UNIQUE KEY `id` (`id`)
) 


abfrage:
code:
1:
2:
3:
4:
5:
6:
7:
SELECT id, was, wo, wann, monat, tag
FROM `kalender`
WHERE offen = '1'
AND monat = '6'
AND tag >= '19'
AND tag <= '22'


und einmal:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
CREATE TABLE `kalender` (
`id` smallint(10) NOT NULL auto_increment,
`was` varchar(255) NOT NULL default '',
`wo` varchar(255) NOT NULL default '',
`offen` enum('0','1') NOT NULL default '1',
`kommentar` text NOT NULL,
`datum` datetime NOT NULL,
UNIQUE KEY `id` (`id`)
) 



abfrage:

code:
1:
2:
3:
4:
5:
6:
7:
SELECT id, was, wo, concat_ws( ':', Hour( datum ) , minute( datum ) ) AS wann, day( datum ) AS tag, month( datum ) AS monat
FROM `kalender`
WHERE offen = '1'
AND month( datum ) = '6'
AND day( datum ) >= '19'
AND day( datum ) <= '22'



Was würdet ihr bevorzugen. Gibt es irgendwelche Vorteile der einen Variante gegenüber der anderen? Wie sieht das mit Geschwindigkeit und Speicherplatz aus?

Vielen Dank für eure Antworten
25.06.06 14:44 CurryWorld ist offline WWW Finden Als Freund hinzufügen
xundy xundy ist männlich
Mitglied


Dabei seit: 16.01.04
Beiträge: 817
Forenversion: 2.3

Antworten Zitieren Editieren Melden       UP

Also es ist sicher sinvoller die Uhrzeit nach dem auslesen per php zu zerlegen ausserdem wenn du eh alle felder abfragst kannste auch gleich * anstelle der Soaltennamen beutzen, hat zwar nix mit der Performance zu tun spart aber tippselarbeit Augenzwinkern

mfg

__________________
Fragen kostet nichts, nicht fragen kann teuer werden!
25.06.06 15:53 xundy ist offline E-Mail WWW Finden Als Freund hinzufügen Füge xundy in deine Kontaktliste ein
SvPe
Mitglied


images/avatars/avatar-3062.gif

Dabei seit: 07.05.05
Beiträge: 279

Antworten Zitieren Editieren Melden       UP

Zitat:
Original von xundy
Also es ist sicher sinvoller die Uhrzeit nach dem auslesen per php zu zerlegen ausserdem wenn du eh alle felder abfragst kannste auch gleich * anstelle der Soaltennamen beutzen, hat zwar nix mit der Performance zu tun spart aber tippselarbeit Augenzwinkern

mfg


Hört bitte nicht auf xundy und verwende weiterhin SELECT feldname1, ..., feldnamex.
Wenn irgendwann Felder zu der Tabelle hinzugefügt werden werden diese dann zusätzlich geholt und nicht gebraucht.

__________________

JID svpe@jabber.ccc.de
OpenPGP KeyID 0x2D682680
eMail sven@codeartists.org
There are only 10 types of people in this world: Those who understand binary and those who don't.

26.06.06 18:45 SvPe ist offline E-Mail Finden Als Freund hinzufügen
CurryWorld CurryWorld ist männlich
Mitglied


Dabei seit: 30.04.04
Beiträge: 108
Herkunft: Gelsenkirchen
Forenversion: 2.1.3

Themenstarter Thema begonnen von CurryWorld
Antworten Zitieren Editieren Melden       UP

Zitat:
Original von SvPe
Zitat:
Original von xundy
Also es ist sicher sinvoller die Uhrzeit nach dem auslesen per php zu zerlegen ausserdem wenn du eh alle felder abfragst kannste auch gleich * anstelle der Soaltennamen beutzen, hat zwar nix mit der Performance zu tun spart aber tippselarbeit Augenzwinkern

mfg


Hört bitte nicht auf xundy und verwende weiterhin SELECT feldname1, ..., feldnamex.
Wenn irgendwann Felder zu der Tabelle hinzugefügt werden werden diese dann zusätzlich geholt und nicht gebraucht.


Nee mach ich auch nicht. Hab schon des öfteren wo anders schon gelesen, dass * nicht so gut sein soll. Habe mal einen kleinen Benchmark mit 1000 Durchläufen gemacht und beide sind ungefähr gleich schnell, also werde ich die alte Variante behalten, dann brauch ich das Script nicht ändern, es sei den es spricht noch irgendetwas dagegen smile
26.06.06 19:34 CurryWorld ist offline WWW Finden Als Freund hinzufügen
Shr522
Mitglied


images/avatars/avatar-1947.gif

Dabei seit: 13.08.04
Beiträge: 304

Antworten Zitieren Editieren Melden       UP

Anstatt drei Abfragen per AND zu verknüpfen würde ich lieber eine direkt nach dem Datum machen oO
Ich bevorzuge die zweite Abfrage.
Du kannst ja dort auch noch per sql das Datum formatieren lassen, was ich auch angenehm fände...
Edit: Außerdem - wenn du dann nach dem Datum suchst, kannst du hervorragend einen Indexwert für die Spalte anlegen...

__________________
Wichtig:
{cssfile} oben links, Beim Editieren keine Absätze oder Compilation failed?!
Allgemeine Informationen über meine Beiträge:
Ich nehme mir vor allgemein nur Hilfestellung zu geben... Eine direkte Lösung führt, meiner Meinung nach, lediglich dazu, dass ich die nächste Frage hinauszögere...

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Shr522: 27.06.06 07:21.

27.06.06 07:20 Shr522 ist offline E-Mail Finden Als Freund hinzufügen
CurryWorld CurryWorld ist männlich
Mitglied


Dabei seit: 30.04.04
Beiträge: 108
Herkunft: Gelsenkirchen
Forenversion: 2.1.3

Themenstarter Thema begonnen von CurryWorld
Antworten Zitieren Editieren Melden       UP

Zitat:
Original von Shr522
Anstatt drei Abfragen per AND zu verknüpfen würde ich lieber eine direkt nach dem Datum machen oO


Das würde doch nicht Funktionieren, da der gesuchte Tag ja in einem Zeitraum von drei Tagen liegt. Es sei den es gibt irgendwas was ich vergessen habe zu beachten. Das mit dem Datum formatieren mache ich doch schon oder meinst du etwas anderes?
27.06.06 11:23 CurryWorld ist offline WWW Finden Als Freund hinzufügen
Shr522
Mitglied


images/avatars/avatar-1947.gif

Dabei seit: 13.08.04
Beiträge: 304

Antworten Zitieren Editieren Melden       UP

Liegen die Tage immer im gleichen Monat? ^^
Ansonsten würde ich mir mal die Funktion Datediff ansehen...

__________________
Wichtig:
{cssfile} oben links, Beim Editieren keine Absätze oder Compilation failed?!
Allgemeine Informationen über meine Beiträge:
Ich nehme mir vor allgemein nur Hilfestellung zu geben... Eine direkte Lösung führt, meiner Meinung nach, lediglich dazu, dass ich die nächste Frage hinauszögere...
27.06.06 12:06 Shr522 ist offline E-Mail Finden Als Freund hinzufügen
BreiteSeite BreiteSeite ist männlich
ETIESETIERB


images/avatars/avatar-4074.gif

Dabei seit: 02.10.04
Beiträge: 1.420
Fähigkeiten: WBB3 Anfänger; WBB2 Fortgeschritten
Herkunft: Sachsen
Forenversion: 3.0

Antworten Zitieren Editieren Melden       UP

Zitat:
Original von xundy
ausserdem wenn du eh alle felder abfragst kannste auch gleich * anstelle der Soaltennamen beutzen, hat zwar nix mit der Performance zu tun



... Doch hat es. Augenzwinkern

» http://www.php-faq.de/q/q-sql-select.html

__________________
Mit freundlichen Grüßen
BreiteSeite


» Mancher Mensch hat ein großes Feuer in seiner Seele, und niemand kommt, um sich daran zu wärmen. «
BreiteSeites sysProfile

27.06.06 12:23 BreiteSeite ist offline E-Mail WWW Finden Als Freund hinzufügen Füge BreiteSeite in deine Kontaktliste ein AIM-Name von BreiteSeite: dackelheinz53 YIM-Name von BreiteSeite: dackelheinz53 MSN Passport-Profil von BreiteSeite anzeigen
xundy xundy ist männlich
Mitglied


Dabei seit: 16.01.04
Beiträge: 817
Forenversion: 2.3

Antworten Zitieren Editieren Melden       UP

Zitat:
Original von BreiteSeite
Zitat:
Original von xundy
ausserdem wenn du eh alle felder abfragst kannste auch gleich * anstelle der Soaltennamen beutzen, hat zwar nix mit der Performance zu tun



... Doch hat es. Augenzwinkern

» http://www.php-faq.de/q/q-sql-select.html


Hat es nicht, wenn schon dann rihtig lesen, meine Aussage war wenn er alle felder abfragt hat es auf die Performance keinen Einfluß, sollten später Felder hinzukommen diese aber in der Abfrage nicht benötigt werden dann schon, aber auf das Beispiel, kann ich meine Aussage so stehen lassen,
und sage nochmal solange wirklich alle felder auch benötigt werden hat dies keinen Einfluß auf die Performance.

mfg

__________________
Fragen kostet nichts, nicht fragen kann teuer werden!
27.06.06 12:52 xundy ist offline E-Mail WWW Finden Als Freund hinzufügen Füge xundy in deine Kontaktliste ein
Baumstruktur | Brettstruktur
Gehe zu:

Neues Thema erstellen Antwort erstellen

yourWBB » yourWBB Misc * » Das Proggen » MySQL und PHP » sql abfrage performance