Indexwahl bei MySQL

Ich habe jetzt einen Primary-Key über zwei Strings, da ich über diese beide (über WHERE) die Daten auslese. Jetzt hat mir jmd. geflüstert, dass INT-Indexscan schneller wäre.
Hier die Struktur der Relation: -- create table online CREATE TABLE IF NOT EXISTS `dbname`.`online` ( `sid` VARCHAR(50) NOT NULL, `ip` VARCHAR(20) NOT NULL, `datetime` DATETIME NOT NULL, `counter` INT(10) NOT NULL AUTO_INCREMENT UNIQUE, PRIMARY KEY(`sid`, `ip`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE latin1_german1_ci AUTO_INCREMENT=1; Die Zugriffe erfolgen über WHERE sid AND ip sollte ich in dem Fall einfach den counter als Index wählen, da er auch UNIQUE ist??? Es geht um mehrere Tabellen, die sich ähnlich verhalten. Deswegen frage ich.

So lange die Abfragen immer über SID und IP laufen, ist es egal glaube ich. Mit dem IP speichern solltest du aber aufpassen, ich würde die IPs nur so lang wie nötig abspeichern (also z.B: 4h nach dem letzten Besuch löschen)

vielen Dank für den Hinweis! Habe noch nie so drauf geachtet (Gott sei Dank erst in der Entwicklungsphase). Werde also einen Hash aus mehrenen Faktoren (Browser, Betriebssystem, etc.) verwenden.
Ok, gut, dann verbleibe ich bei der Strategie für die Indexwahl.

Ich denke “counter” sollte eigentlich der Primary-Key sein.

Aber egal, interessant für dich ist vllt noch dieser Artikel über die Speicherung von IP-Adressen (von technischer Seite).