Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Problem mit Index einer MYSQL-Datenbank

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
branchenbaer
PostRank 2
PostRank 2
Beiträge: 41
Registriert: 27.10.2012, 18:34

Beitrag von branchenbaer » 13.08.2013, 09:42

Hallo,
ich habe in einer Tabelle (aufgeteilt in 2 Spalten) Geokoordinaten gespeichert, einmal das Feld latitude und einmal longitude.
Zum schnelleren auffinden soll dabei ein Index gesetzt werden. Problem:

1. Wenn ich einen Index über beide Felder erstelle, so ist die Kardinalität genau so hoch wie die Anzahl der Datensätze (=10.000). Verstehe ich soweit.

2. Wenn ich für jedes Feld einen eigenen Index erstelle, so ist die Kardinalität jedes der beiden Indizes exakt die Hälfte (=5.000). Und genau das verstehe ich nicht ! Warum haben beide genau die gleiche Größe und vor allem exakt die Hälfte der Anzahl der Datensätze ?
Die Kardinalität müßte hier doch fast so hoch sein wie bei Index 1, oder ?

Danke für Eure Hilfe.
Uli.

rayman
PostRank 5
PostRank 5
Beiträge: 279
Registriert: 21.11.2006, 15:49
Wohnort: Frankfurt am Main

Beitrag von rayman » 14.08.2013, 12:40

andersrum gefragt,
ist denn die Abfrage so langsam, dass du wirklich einen Indizie brauchst?

Ich habe auch erst kürzlich eine solche Datenbankank aufgebaut
(Latitude & Lonitude ..etc..)
mit über 80.000 Datensätze
und habe sehr schnelle Abfragezeiten ohne Indezies

branchenbaer
PostRank 2
PostRank 2
Beiträge: 41
Registriert: 27.10.2012, 18:34

Beitrag von branchenbaer » 14.08.2013, 17:14

Hallo,
Danke für die Antwort.

Na ja, ich bin mir nicht sicher, ob dies für den langsamen Aufbau meiner Seite sorgt, oder doch etwas anderes. Wieso nimmst Du keinen Index ?

nerd
PostRank 10
PostRank 10
Beiträge: 4023
Registriert: 15.02.2005, 04:02

Beitrag von nerd » 09.09.2013, 03:35

Stellt sich die frage was du genau machen willst. Liegen deine coordinaten alle in der selben region (nur deutschland) oder sind die weltweit verteilt? Wieviele koordinaten hast du pro flaeche? wie sehen deine queries aus? was ist sonst noch in der tabelle? wie lange dauert deine query ohne index?

Ohne genaueres zu wissen, wuerde ich mal sagen dass du in diesem fall vielleicht nur die ersten 4-6 chars von geo_lat und geo_lng indizieren solltest, damit dein index klein bleibt. Bei mir ist der datentyp fuer geo position auf Decimal (10,6) fuer beide felder gesetzt.

Aus dem bauch herraus wuerde ich den index so "ungenau" setzen, dass du z.b bei einer praezision von X nachkommastellen noch ~100 moegliche ergebnisse bekommst die mysql dann noch "manuell" durchsuchen muss.
Ich hoffe die erklaerung ist verstaendlich...?

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag