Seite 1 von 1

Problem mit Index einer MYSQL-Datenbank

Verfasst: 13.08.2013, 09:42
von branchenbaer
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.

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Verfasst: 14.08.2013, 12:40
von rayman
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

Verfasst: 14.08.2013, 17:14
von branchenbaer
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 ?

Verfasst: 09.09.2013, 03:35
von nerd
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...?