SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

TYPO3 Kochbuch

TYPO3 Kochbuch zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)
Hilfe Community Kalender Heutige Beiträge Suchen

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 20.01.2005, 15:39:05
M.o.D M.o.D ist offline
Anfänger
 
Registriert seit: Oct 2004
Beiträge: 8
Langsame Datenbankabfrage.

Hallo!

Ich habe z.Z. eine Datebankabfrage, welche sechs (!) Tabellen involviert. Diese Abfrage dauert nun selbst bei einer geringen Datenmenge in der DB zu lange.

Auf der einen Seite soll eine DB ja möglichst normalisiert sein, d.h. in möglichst viele Tabellen gesplittet sein. Nun ist es aber so, dass SQL anscheinend den unangenehmen Nebeneffekt hat, dass es viele Daten lädt - wie auch immer - kann mir hier jemand einen Rat geben, wie die Abfragezeit etwas verkürzt werden kann?

MfG M.o.D
Mit Zitat antworten
  #2  
Alt 20.01.2005, 15:47:09
c4 c4 ist offline
SELFPHP Guru
 
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
Da man Deinen Query nicht kennt, kann man Dir nur das Stichwort JOINs vor die Füße schmeißen.
__________________
sic!
--> http://dbCF.de/
Mit Zitat antworten
  #3  
Alt 20.01.2005, 18:02:57
Matthias Matthias ist offline
Moderator
 
Registriert seit: Jan 2002
Ort: CologneCity
Alter: 46
Beiträge: 484
Und ich werf dir noch Indizes vor die Füsse ;))
Mit Zitat antworten
  #4  
Alt 22.01.2005, 11:31:36
M.o.D M.o.D ist offline
Anfänger
 
Registriert seit: Oct 2004
Beiträge: 8
Zu JOIN: Wenn ich mir also mit der Query eine neue Tabelle zusammenstelle (mit JOIN) mit den Daten, welche ich benötige, dann könnte die Abfrage etwas beschleunigt werden?

Zu Indizes: Könntest Du da noch etwas mehr zu sagen? Momentan weiß ich leider nicht, was Du da meinst...

Was ist eigentlich, wenn ich bei JOIN Tabellenspalten verbinde, welche den gleichen Namen haben (z.B. `id`)?

MfG M.o.D
Mit Zitat antworten
  #5  
Alt 22.01.2005, 12:43:59
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
Zum Thema Indizies habe ich hier mal zwei Links für dich aus der MySQL-Dokumentation:
- http://dev.mysql.com/doc/mysql/de/MySQL_indexes.html
- http://dev.mysql.com/doc/mysql/de/Indexes.html

Zur JOIN-Syntax geht es hier lang:
- http://dev.mysql.com/doc/mysql/en/JOIN.html

Bei gleichen Spalten ist es ratsam einen Alias zu verwenden:
- http://dev.mysql.com/doc/mysql/de/SELECT.html
Zitat:
Einem SELECT-Ausdruck kann mit AS ein Alias zugewiesen werden. Der Alias wird als Spaltenname verwendet und kann bei ORDER BY- oder HAVING-Klauseln benutzt werden.
Mit Zitat antworten
  #6  
Alt 22.01.2005, 13:32:54
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
> Bei gleichen Spalten ist es ratsam einen Alias zu verwenden:

es gibt gar keine andere möglichkeit!

zudem das sql-statement hier wirklich hilfreich wäre, vielleicht mit einer kurzen erklärung der tabellen-struktur...weil so stochert man nur im dunklen rum ;-)
Mit Zitat antworten
  #7  
Alt 22.01.2005, 14:35:18
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
Zitat:
Original geschrieben von feuervogel
> Bei gleichen Spalten ist es ratsam einen Alias zu verwenden:

es gibt gar keine andere möglichkeit!
Konnte man nicht irgendwie mit tabelle.spalte weiterarbeiten?
Mit Zitat antworten
  #8  
Alt 22.01.2005, 15:06:51
M.o.D M.o.D ist offline
Anfänger
 
Registriert seit: Oct 2004
Beiträge: 8
O.K. hier ist einmal die SQL-Syntax.
Aber die Tipps waren schon hilfreich, danke. Ich werde mich hier einmal etwas mehr informieren.

Kurz zur SQL Abfrage: Es wird hier in der Datenbank nach allen Datensätzen gesucht, die das gesuchte Bild
PHP-Code:
$_REQUEST[SELCAT
referenzieren. D.h. das Bild kann als Leadbild einem Artikel, einer Gruppe oder auch im Text eines Artikels mit dem Pseudocode "[BILD ...]" vorhanden sein. Diese Datensätze werden ausgelesen.

Darüber hinaus existiert nun eine Entität "rights", in welcher die Recht eines Benutzers zu einer Gruppe, einem Artikel etc. gespeichert sind.

Ich benötige nun eine SQL Abfrage, welche nur diejenigen Datensätze ausgibt, zu denen der Nutzer auch die Rechte hat, d.h. er muss berechtigt sein, den Artikel oder die Gruppe, in welchem/r das Bild implementiert ist zu ändern oder zu löschen.

PHP-Code:
SELECT DISTINCT `images`.*
                        
FROM `images`, `article`, `groups`, `category`,`articletexts`, `leadimages`
                        
WHERE 
                            
(
                            `
images`.`id` = `leadimages`.`IID`          AND
                            `
leadimages`.`AID`=`article`.`id`          AND
                            `
article`.`GROUP`=`groups`.`id`          AND
                            `
groups`.`CATEGORY`=`category`.`id`      AND
                            `
category`.`id`='$_REQUEST[SELCAT]'
                                OR
                            (
                            `
images`.`id`=`groups`.`IMAGE`             AND
                            `
groups`.`CATEGORY`=`category`.`id`         AND
                            `
category`.`id`='$_REQUEST[SELCAT]'
                                OR
                            (     
                             (
INSTR(`articletexts`.`TEXT`, CONCAT'[BILD ', `images`.`id` ) )<>0)
                                 AND
                             (
                             `
articletexts`.`id`=`article`.`CONTENT` AND
                             `
article`.`GROUP`= `groups`.`id`         AND
                             `
groups`.`CATEGORY`=`category`.`id`      AND
                             `
category`.`id`='$_REQUEST[SELCAT]'
                             
)     
                            )
                        
ORDER BY `$orderby$sort 
Vielen Dank für die Mühen!

MfG M.o.D
Mit Zitat antworten
  #9  
Alt 22.01.2005, 22:59:12
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
Zitat:
Original geschrieben von xabbuh
Konnte man nicht irgendwie mit tabelle.spalte weiterarbeiten?
SELECT bla.id, blubb.id ...
=> mysql_query();
=> mysql_fetch_array();
=> $result_array[ 'id' ] = ???;
Mit Zitat antworten
  #10  
Alt 23.01.2005, 14:38:45
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
Hast Recht, tabelle.spalte kann man nur innerhalb der Abfrage verwenden. Nach der Abfrage geht das in PHP dann nicht mehr.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:06:17 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt