Seite 1 von 1

Tabellen Struktur und Index für Ip Tracker

Verfasst: 23.11.2009 10:55
von Bierhasser
Ich arbeite momentan an einem Ip Tracker Mod. Nun stellt sich die Frage welche Index/e sind für die Tabelle sinnvoll?
Momentane Struktur:

Code: Alles auswählen

CREATE TABLE `phpbb3_ip_tracking` (
  `ip_id` bigint(20) unsigned NOT NULL auto_increment,
  `ip_ip` varchar(16) collate utf8_bin NOT NULL,
  `ip_time` int(11) unsigned NOT NULL default '0',
  `ip_location` text collate utf8_bin NOT NULL,
  `ip_referer` text collate utf8_bin NOT NULL,
  `ip_username` varchar(255) collate utf8_bin NOT NULL,
  `ip_user_id` mediumint(8) unsigned NOT NULL default '0',
  `ip_user_type` smallint(2) unsigned NOT NULL default '0',
  `ip_browser` varchar(255) collate utf8_bin NOT NULL,
  PRIMARY KEY  (`ip_id`),
  KEY `ip` (`ip_ip`),
  KEY `username` (`ip_username`),
  KEY `user_type` (`ip_user_type`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin; 
Im Admicp gibt es dann eine Suchmaske um den Ip-Tracker zu durchsuchen. SCREENSHOT
Alle Abfragen enden mit

Code: Alles auswählen

 ORDER BY ip_time ASC/DESC
Meine frage nun, ist es sinnvoll über die ip_time auch noch einen Index zu erstellen? Oder sogar ratsam alle Indexe bis auf PRIMARY zu löschen?

Ich denke für das Suchen im Ip-Tracker ist ein index für jedes Feld ratsam.
Aber wie ist es beim schreiben in die Tabelle wenn einige Tausend Einträge vorhanden sind?

Re: Tabellen Struktur und Index für Ip Tracker

Verfasst: 23.11.2009 15:15
von gn#36
Ich würde mal sagen das kommt ganz darauf an, wie du auf die Tabelle zugreifen willst. Ein Index ist ja letztlich dazu da, den Zugriff anhand der zum Index gehörigen Felder zu beschleunigen, braucht aber gleichzeitig natürlich Platz. Wenn du z.B. häufig Daten nach IP sortiert abfragst oder spezielle IPs suchst dann solltest du darauf einen Index legen. Wenn du die Daten nicht abfragst brauchst du auch keinen Index :) Ausnahmen wären Primärschlüssel und UNIQUE welche ja auch für Datenkonsistenz sorgen indem ich festlegen kann, anhand welcher Felder ein Eintrag identifiziert werden kann.
Das ist aber meine Meinung, vielleicht gibt's ja noch jemanden der da nicht wie ich nur kurz drüber nachgedacht hat.

Re: Tabellen Struktur und Index für Ip Tracker

Verfasst: 23.11.2009 17:56
von Dr.Death
Hi,

kurze "goldene" Regel:

Indizes sollten dort verwenden wo:
- gesucht (WHERE) und/oder
- sortiert (ORDER BY) und/oder
- gruppiert (GROUP) wird.

Du kannst ja mal ein Select Statement zusammenbasteln und dann im phpmyadmin per vorangestellten " EXPLAIN " aufrufen.

Re: Tabellen Struktur und Index für Ip Tracker

Verfasst: 23.11.2009 18:29
von Mahony

Re: Tabellen Struktur und Index für Ip Tracker

Verfasst: 23.11.2009 18:37
von Bierhasser
Ich danke Euch für die Meinungen. Dann werde ich doch erstmal mehr Indexe anlegen. Mal sehen wie sich das bei 1Milion Einträge verhält.

Re: Tabellen Struktur und Index für Ip Tracker

Verfasst: 23.11.2009 23:54
von bantu
Nicht ganz zur Frage, aber trotzdem: phpBB 3.0.x kann prinzipiell auch mit IPv6. Deshalb ist user_ip in phpBB ein VARCHAR(40).

Re: Tabellen Struktur und Index für Ip Tracker

Verfasst: 24.11.2009 08:28
von Bierhasser
Danke Bantu das ist mir gar nicht aufgefallen :oops: