php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 14.03.2010, 00:09  
Neuer Benutzer
 
Registriert seit: 13.03.2010
Beiträge: 2
PHP-Kenntnisse:
Anfänger
glasaugenfrosch befindet sich auf einem aufstrebenden Ast
Standard Geschwindigkeit von MySql

Hallo!

Hab erst letztens mit PHP und MySQL angefangen und habe folgende Frage:

Wenn man eine seeeeehr große Datenbank hat, als wirklich richtig groß, wie ist das da mit der Suchgeschwindigkeit wenn man jetzt zum Beispiel den Primärschlüssel sucht?
Also als Beispiel: Man hätte also 58000 Einträge und weiß dass das, was man sucht bei id(Primärschlüssel) = 43788 liegt.
Funktioniert dann die Suche in Form einer "for-Schleige", also jedes Element wird einzeln überprüft oder ist so eine Datenbank so megaschlau, dass sie unabhängig von der Stelle des Primärschlüssel annähernd gleiche Ausführungsdauer für eine Anrage benötigt?
Davon abhängig fände ich interessant zu wissen, ob ein Aufspalten einer Entität in mehrere Tabellen (id von 0-9999, id von 10000-1999 etc.) sinnvoll wäre?

Vielen Dank für die Aufmerksamkeit,
euer Glasaugenfrosch!
glasaugenfrosch ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 14.03.2010, 14:29  
¯\_(ツ)_/¯
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.814
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

58 000 Einträge sind für eine Datenbank jetzt noch nicht so viel. Wenn die Spalte in der gesucht wird einen Index besitzt (Primärschlüssel hat immer einen Index bei Mysql) dann kann die Suche deutlich schneller durchgeführt werden.

Schau dir mal den B-Baum an. So ist ein Index aufgebaut, die Laufzeit beträgt dann O(log x).

Tabellen aufspalten ist eine Möglichkeit (nennt man Partitionieren) sollte bei 58 000 Einträgen aber eigentlich noch keine Überlegung wert sein.
Flor1an ist offline   Mit Zitat antworten
Alt 15.03.2010, 14:58  
Neuer Benutzer
 
Registriert seit: 17.02.2010
Beiträge: 29
PHP-Kenntnisse:
Fortgeschritten
Linadillar befindet sich auf einem aufstrebenden Ast
Standard

58000 Einträge sind für eine Datenbank ne Lachnummer.
Du solltest dennoch auf gutes Datenbank Design achten und Indizes setzen, das beschleunigt das ganze noch.

Nur mal so damit du nen Gefühl bekommst was ner Datenbank nichts ausmacht.
Wir haben hier ne Datenbank mit ca. 1GB Daten und 450000 Datensätzen, dass reißt die Datenbank komplett aussem FF.

Ich hoffe ich konnte helfen.

Lina
__________________
Der Kopf ist rund, damit das Denken die Richtung wechseln kann.
Linadillar ist offline   Mit Zitat antworten
Alt 15.03.2010, 18:36  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Ich finde solche Fragen immer verhältnismässig sinnlos. Es gibt nicht die Performance, weil es nicht:

- die Maschine gibt: Hostingpaket, VServer, DB-Server-Cluster
- das System gibt: Ram, Plattenplatz, Betriebssystem, Caching...
- die Tabelle gibt: Datentypen, Schlüssel und Indizies
- den Algorithmus gibt: InnoDB, MyISAM
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 15.03.2010, 20:49  
Neuer Benutzer
 
Registriert seit: 17.02.2010
Beiträge: 29
PHP-Kenntnisse:
Fortgeschritten
Linadillar befindet sich auf einem aufstrebenden Ast
Standard

Nikosch da haste wohl Recht. Issen gesundes Zusammenspiel aus allem, was die Performance ausmacht.

Pauschalisieren kann man sowas nicht.
__________________
Der Kopf ist rund, damit das Denken die Richtung wechseln kann.
Linadillar ist offline   Mit Zitat antworten
Alt 18.03.2010, 07:43  
Neuer Benutzer
 
Registriert seit: 13.03.2010
Beiträge: 2
PHP-Kenntnisse:
Anfänger
glasaugenfrosch befindet sich auf einem aufstrebenden Ast
Standard

Erst mal danke für die Antworten, tut mir echt Leid dass ich erst jetzt mit MySQL angefangen habe und dass nicht schon seit Jahren mache .

Wie wäre dass denn wann man eine nicht als Index konstruierte Spalte (kann man ja bei zB. phpMyAdmin einstellen) nach einem Eintrag durchsucht? Schafft das MySQL auch problemlos oder sind Indizes immer schneller?

LG,
glasaugenfrosch

(Nikosch: Naja, ich hab nicht nach Performance allgemein gefragt, sondern ob die Anzahl der Primärschlüssel in einer Tabelle einen Einfluss auf die Ausführung eines Query hat, was allerdings leider nicht unbedingt aus der Überschrift hervorgeht )
glasaugenfrosch ist offline   Mit Zitat antworten
Alt 18.03.2010, 07:48  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Zitat:
Anzahl der Primärschlüssel
Hier gibt es genau einen! -> Lerne Grundlagen!
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 18.03.2010, 08:42  
Neuer Benutzer
 
Registriert seit: 17.02.2010
Beiträge: 29
PHP-Kenntnisse:
Fortgeschritten
Linadillar befindet sich auf einem aufstrebenden Ast
Standard

Hey,

Indizes können Abfragen beschleunigen, aber auch verlangsamen.
Kommt drauf an wie sie gestalltet sind und wie viele Indizes ich verwende.

Aber vom Grundsatz her verbessern Indize in erster Linie die Performance.
__________________
Der Kopf ist rund, damit das Denken die Richtung wechseln kann.
Linadillar ist offline   Mit Zitat antworten
Alt 18.03.2010, 09:27  
Neuer Benutzer
 
Registriert seit: 03.09.2009
Beiträge: 12
PHP-Kenntnisse:
Anfänger
ici_ice befindet sich auf einem aufstrebenden Ast
Standard

Indizierung kannst du dir so vorstellen wie der index in einem Buch,
wenn du in deiner Tabelle 500 Einträge hast und dann z.B. das Feld name indiziert hast steht z.B. in der Indextabelle:
DatensatzNr. Name
1 Andresen
2 Borowski
3 Cleuvert

Jetzt rennt eine Sequentielle suche durch diese Tabelle und sucht das entsprechende Feld.

Allerding musst du auch immer die Kehrseite betrachten, denn wenn du die indizierte Suche nutzt, dann benötigst du auch mehr zeit für Insert und Update Abfragen, da ja der Index neu geschrieben werden muss bzw verändert wird.
Du kannst hier (Primärschlussel als Index) noch mal ein bisschen nachlesen und wenn du möchtest kann ich dir dazu auch wohl eine Ausarbeitung schicken wo das erklärt ist.
ici_ice ist offline   Mit Zitat antworten
Alt 18.03.2010, 12:45  
¯\_(ツ)_/¯
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.814
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

@ici_ice: Ein Index vermeidet ja gerade eine sequentielle Suche! Das ist ja der große Vorteil, sonst könntest du auch direkt im Datenbestand suchen. Schau dir mal B-Bäume an. Dort ist erklärt wie ein Index aufgebaut ist und warum er deutlich weniger Vergleiche bei einer Suche braucht als eine sequentielle Suche!
Flor1an ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Kann keine Umlaute im mysql client eingeben Oger Datenbanken 9 02.04.2009 11:54
MySQL Konsole und Umlaute unter Windows [LÖSUNG] f4ckm5 Datenbanken 8 30.03.2009 22:10
GUI-Tool kann sich nicht mit MySql verbinden KWitt72 PHP Tipps 2008 3 21.12.2008 16:56
Mysql Geschwindigkeit J_Jara Datenbanken 20 18.04.2008 09:00
Mysql Server Einstellunen Optimieren pchero Datenbanken 3 01.05.2007 19:50
Geschwindigkeit: Array vs. MySQL Jacks Rache PHP Tipps 2006 4 13.03.2006 20:45
[Erledigt] MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
Mysql 4.1.x unter php 4.3.9 Datenbanken 3 15.11.2005 13:49
[Erledigt] not allowed to connect to this MySQL server PHP Tipps 2005-2 2 23.09.2005 18:34
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
mysql root passwort vergessen Datenbanken 1 29.05.2005 11:33
MySQL - Geschwindigkeit faux PHP-Fortgeschrittene 17 28.05.2005 16:04
[Erledigt] Access denied for user: '@localhost' / SYSTEM@localhost Datenbanken 0 10.11.2004 20:35
PHP5 & MySQL Datenbanken 5 01.08.2004 05:47

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql geschwindigkeit, geschwindigkeit mysql, datenbank geschwindigkeit, geschwindigkeit von mysql, wieviele indizies sinnvoll?, mqsql geschwindigkeit, datenbanken geschwindigkeit, sequentielles suchen in php, mysql verarbeitungsgeschwindigkeit anzeigen, mysql volltextsuche ausarbeitung, datenbank-geschwindigkeit, mysql geschwindigkeit mehrere kleine eine große, mysql geschwindigkeit eine mehrere tabellen, mysql felder geschwindigkeit, mysql geschwindigkeit optimieren, vserver geschwindigkeit optimieren, glasaugenfrosch, mysql * oder felder geschwindigkeit, mysql geschjwindigkeit, rechengeschwindigkeit php

Alle Zeitangaben in WEZ +1. Es ist jetzt 13:16 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum