sql abfrage performance |
CurryWorld
Mitglied
Dabei seit: 30.04.04
Beiträge: 108
Herkunft: Gelsenkirchen Forenversion: 2.1.3
|
|
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 |
WWW
Finden
Als Freund hinzufügen
|
|
xundy
Mitglied
Dabei seit: 16.01.04
Beiträge: 817
Forenversion: 2.3
|
|
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
mfg
__________________ Fragen kostet nichts, nicht fragen kann teuer werden!
|
|
25.06.06 15:53 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
SvPe
Mitglied
Dabei seit: 07.05.05
Beiträge: 279
|
|
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
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 |
E-Mail
Finden
Als Freund hinzufügen
|
|
CurryWorld
Mitglied
Dabei seit: 30.04.04
Beiträge: 108
Herkunft: Gelsenkirchen Forenversion: 2.1.3
Themenstarter
|
|
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
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
|
|
26.06.06 19:34 |
WWW
Finden
Als Freund hinzufügen
|
|
CurryWorld
Mitglied
Dabei seit: 30.04.04
Beiträge: 108
Herkunft: Gelsenkirchen Forenversion: 2.1.3
Themenstarter
|
|
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 |
WWW
Finden
Als Freund hinzufügen
|
|
BreiteSeite
ETIESETIERB
Dabei seit: 02.10.04
Beiträge: 1.420
Fähigkeiten: WBB3 Anfänger; WBB2 Fortgeschritten Herkunft: Sachsen Forenversion: 3.0
|
|
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.
» 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 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
xundy
Mitglied
Dabei seit: 16.01.04
Beiträge: 817
Forenversion: 2.3
|
|
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.
» 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 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
|