php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #16 (permalink)  
Alt 23-11-2009, 20:55
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von keks333 Beitrag anzeigen
wo setze ich da am besten den index damits was taugt???
Ich bitte dich. Das wurde aber nun zur Genüge geklärt:

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Du indizierst einfach die richtigen* Spalten und schon geht alles schneller. Das ist alles

___
* die richtigen sind solche, die von Joins mit on oder using benutzt werden oder in Where-Klauseln auftauchen.
Mit Zitat antworten
  #17 (permalink)  
Alt 23-11-2009, 21:16
keks333
 Registrierter Benutzer
Links : Onlinestatus : keks333 ist offline
Registriert seit: Nov 2009
Beiträge: 20
keks333 befindet sich auf einem aufstrebenden Ast
Exclamation

ich bitte dich , nein sonst hätte ichs kapiert. auf welche spalten kommt es an . alle die man abfragt ? poste doch bitte EINMAL wie es auszusehen hat. ein konkretes beispiel gibs sooo selten (bzw gar nicht) im netz und würde sicherlich helfen.
Mit Zitat antworten
  #18 (permalink)  
Alt 23-11-2009, 21:22
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

DB Speed Faustregel:
1. Alle Spalten, welche im WHERE Teil vorkommen, sollten mit einem Index versehen werden. Das beschleunigt Zugriffe ungemein!
2. Je mehr Spalten es mit einem Index in der betreffenden Tabelle gibt, desto langsammer sind INSERT, DELETE und UPDATE.
3. Da auch DELETE und UPDATE oft einen WHERE Teil haben, siehe Punkt 1
4. Da meist Lesezugriffe überwiegen, lohnt sich oft ein vorsortieren der Daten: "ALTER TABLE `tabelle` ORDER BY `spalte` ASC"
*grob vereinfacht*
__________________
Wir werden alle sterben
Mit Zitat antworten
  #19 (permalink)  
Alt 23-11-2009, 21:31
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Poste bitte mal die Create-Table-Statements. Im PHPMyAdmin geht das ganz einfach über die Export-Funktion: nur Struktur, ohne Daten. Dann sehen wir weiter.
Mit Zitat antworten
  #20 (permalink)  
Alt 23-11-2009, 21:45
keks333
 Registrierter Benutzer
Links : Onlinestatus : keks333 ist offline
Registriert seit: Nov 2009
Beiträge: 20
keks333 befindet sich auf einem aufstrebenden Ast
Standard

oh mann ... das ich des indexieren im phpmyadmin machen muss ... da lag des problem... dacht immer das muss ins script.

die seite läuft jetz. zack und da... der NOT IN befehl (oder auch left join) besteht jetz nur noch aus einer zeile und es rockt....

bei der primary tabelle werden immernoch alle datensätze ausgelesen und verglichen aber des geht flott.

so siehts jetz aus

id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE l ALL 1062 Using where; Using temporary; Using filesort Ändern Löschen
1 SIMPLE p ref bildid bildid 4 d00c2e77.l.bildid 1 Using where; Not exists
Mit Zitat antworten
  #21 (permalink)  
Alt 23-11-2009, 21:47
keks333
 Registrierter Benutzer
Links : Onlinestatus : keks333 ist offline
Registriert seit: Nov 2009
Beiträge: 20
keks333 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Poste bitte mal die Create-Table-Statements. Im PHPMyAdmin geht das ganz einfach über die Export-Funktion: nur Struktur, ohne Daten. Dann sehen wir weiter.
die bildtabelle wo er imernoch alle bilder ausliest und vergleicht obwohl er ja nur eines brauch... oder is des normal?

PHP-Code:
CREATE TABLE loungebilder (
   
owner int(11) DEFAULT '0' NOT NULL,
   
ownernick text NOT NULL,
   
galerie int(11) DEFAULT '0' NOT NULL,
   
bildnr varchar(11) DEFAULT '0' NOT NULL,
   
datei varchar(20) DEFAULT '0' NOT NULL,
   
allow_c tinyint(4) DEFAULT '0' NOT NULL,
   
bildid int(11NOT NULL auto_increment,
   
uploadtime int(11) DEFAULT '0',
   
titel tinytext NOT NULL,
   
text text NOT NULL,
   
kategorie text NOT NULL,
   
pcount int(11) DEFAULT '0' NOT NULL,
   
comments int(6) DEFAULT '0' NOT NULL,
   
favs tinyint(6) DEFAULT '0' NOT NULL,
   
tags varchar(200NOT NULL,
   
book tinyint(4) DEFAULT '0' NOT NULL,
   
booknr varchar(4NOT NULL,
   
votes int(6) DEFAULT '0' NOT NULL,
   
summe int(11) DEFAULT '0' NOT NULL,
   
ergebnis varchar(6) DEFAULT '0' NOT NULL,
   
allow_v tinyint(4) DEFAULT '0' NOT NULL,
   
PRIMARY KEY (bildid),
   
KEY bildid (bildid),
   
KEY allow_v (allow_v)
); 
Mit Zitat antworten
  #22 (permalink)  
Alt 23-11-2009, 22:17
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Und das Create Table der anderen Tabelle?

Der Index auf bildid ist überflüssig, weil der sich mit dem Primärschlüssel deckt. Gut wäre noch einer auf die owner-Spalte. (In PHPMyAdmin geht das ja auch ganz leicht über den Blitz-Button.)

Ist das MyISAM oder InnoDB? Ich sehe gar keine Fremdschlüssel. Normalisiert ist das auch noch nicht richtig, wenn ich mir z. B. die Spalten comments und tags ansehe, klingt das als wäre es nicht mal 1.NF. Da wäre eigentlich noch Verbesserungspotential alleine in der Struktur der DB. Wenn es um Geschwindigkeit geht, sollten diese Sachen an erster Stelle stehen. Auch die durchoptimiertesten Abfragen bringen da keine nennenswerten Verbesserungen mehr.
Mit Zitat antworten
  #23 (permalink)  
Alt 23-11-2009, 23:37
keks333
 Registrierter Benutzer
Links : Onlinestatus : keks333 ist offline
Registriert seit: Nov 2009
Beiträge: 20
keks333 befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
CREATE TABLE picvotes (
   
userid int(11) DEFAULT '0' NOT NULL,
   
bildid int(11) DEFAULT '0' NOT NULL,
   
wann int(11) DEFAULT '0' NOT NULL,
   
vote tinyint(4) DEFAULT '0' NOT NULL,
   
KEY bildid (bildid)
); 
ja wie gesagt das optimieren der tabellen is noch neuland. hab ich bis jetz auch unterschätzt

myisam, innodb & NF sagt mir auch nix ^^

aber danke schon mal für die hilfe.
Mit Zitat antworten
  #24 (permalink)  
Alt 24-11-2009, 00:36
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Wenn dein Hoster es anbietet (in einem anderen Thread meinte der TO, dass sein Hoster es nicht tut), solltest du immer InnoDB als (Standard-)Engine auswählen, wenn du eine DB (eigentlich Schema) und darin Tabellen anlegst. MyISAM macht nur in Ausnahmefällen Sinn, auf die ich jetzt aber nicht näher eingehen will.

In PHPMyAdmin kannst du dann auch echte Fremdschlüsselconstraints anlegen, durch welche die referentielle Integrität sichergestellt ist. Damit nimmt dir das DBMS auch noch Arbeit ab, die sonst in Form zusätzlicher Überprüfungen im Code notwendig wäre.

Die Normalformen sind z. B. schon bei Wikipedia ganz vernünftig erklärt, aber es gibt im Netz massig Ressourcen, wo das speziell für Anfänger noch besser und verständlicher rübergebracht wird.

Bis zur 3. Normalform (3NF) oder zur BCNF sollte deine Datenbank mindestens normalisiert sein.

Da wäre jetzt mal eine Google-Session mit anschließender Lektüre und evtl. noch ein paar Tutorials sinnvoll, sonst kommst du früher oder später in Situationen, wo du dir wünschst, dass du es lieber gleich richtig strukturiert hättest.

Geändert von AmicaNoctis (24-11-2009 um 00:44 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
echo-Geschwindigkeit mnhg PHP Developer Forum 9 25-03-2007 16:54
Geschwindigkeit Floriam BRAINSTORMING PHP/SQL/HTML/JS/CSS 18 13-10-2003 01:56
Upload Geschwindigkeit toshi PHP Developer Forum 1 07-09-2003 16:04
Geschwindigkeit thebrain SQL / Datenbanken 1 29-04-2003 14:08
geschwindigkeit schmalle News / Kostenloses 5 12-09-2001 07:13

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:59 Uhr.