Hi,
hab mal ne frage... bin relatiev neu bei Mysql & PHP und steh vor einem "Problem"... ich muß mich für mein neues Projekt auch sehr mit der geschwindigkeit einer Abfrage auseindersetzen. Und zwar es geht um die gestaltung einer Tabelle... mit Primary und Foreign Keys hab ich mich noch nicht beschäftigt, spielt hier aber (im bezug auf geschwindikeit) eine Rolle....
die Frage klingt vielleicht doof, aber ich möchte einfach sicher gehen
2 möglichkeiten hab ich.....
eine Tabelle ist fix:
tabelle1:
id INT unsigned autoincement,
name text,
Adresse text,
....
Hier mal grundlegende struktur1:
tabelle2:
spalte1 INT unsigned,
spalte2 INT unsigned,
spalte3 INT unsigned,
spalte4 INT unsigned,
Spalte5 INT unsigned,
inhalt text
die zugehörige Abfrage...:
SELECT * FROM tabelle2 WHERE spalte1==10363 || spalte2==10363 || spalte3==10363 || spalte4==10363 || spalte5==10363
die Zahl "10363" ist hier die UsereID aus Tabelle1
ausgeben will ich dann alle zugehörigen Namen, die sich in den gefundenen Einträgen befinden und natürlich den Inhalt (der eigentlich auch ein Verweis auf ne andere Tabelle sein) ...
wird sich sicher mit ner crossquery (oder mit den Keys) machen lassen....
Struktur2:
spalte text,
inhalt text
(+weitere spalten)
die spalten 1-5 fasse ich hier zusammen, indem ich die einzelnen zahlen mit einem Buchstaben trenne zB 138x63453x736x36347x9567503
zugehörige Abfrage wäre:
SELECT inhalt FROM tabelle2 WHERE spalte LIKE '%10363%'
um die namen zu den Userids herauszufinden müßte ich hier auf jedenfall zuerst mit explode die Zahlen trennen und ein zweite Abrage machen...
SELECT name WHERE id IN (138, 63453, 736, 36347, 9567503)
Was ist schneller???
ich nehme mal an Version1, sicher bin ich mir aber nicht ganz, und wie schauts aus wenn ich 10 Spalten hätte???
hab mal ne frage... bin relatiev neu bei Mysql & PHP und steh vor einem "Problem"... ich muß mich für mein neues Projekt auch sehr mit der geschwindigkeit einer Abfrage auseindersetzen. Und zwar es geht um die gestaltung einer Tabelle... mit Primary und Foreign Keys hab ich mich noch nicht beschäftigt, spielt hier aber (im bezug auf geschwindikeit) eine Rolle....
die Frage klingt vielleicht doof, aber ich möchte einfach sicher gehen
2 möglichkeiten hab ich.....
eine Tabelle ist fix:
tabelle1:
id INT unsigned autoincement,
name text,
Adresse text,
....
Hier mal grundlegende struktur1:
tabelle2:
spalte1 INT unsigned,
spalte2 INT unsigned,
spalte3 INT unsigned,
spalte4 INT unsigned,
Spalte5 INT unsigned,
inhalt text
die zugehörige Abfrage...:
SELECT * FROM tabelle2 WHERE spalte1==10363 || spalte2==10363 || spalte3==10363 || spalte4==10363 || spalte5==10363
die Zahl "10363" ist hier die UsereID aus Tabelle1
ausgeben will ich dann alle zugehörigen Namen, die sich in den gefundenen Einträgen befinden und natürlich den Inhalt (der eigentlich auch ein Verweis auf ne andere Tabelle sein) ...
wird sich sicher mit ner crossquery (oder mit den Keys) machen lassen....
Struktur2:
spalte text,
inhalt text
(+weitere spalten)
die spalten 1-5 fasse ich hier zusammen, indem ich die einzelnen zahlen mit einem Buchstaben trenne zB 138x63453x736x36347x9567503
zugehörige Abfrage wäre:
SELECT inhalt FROM tabelle2 WHERE spalte LIKE '%10363%'
um die namen zu den Userids herauszufinden müßte ich hier auf jedenfall zuerst mit explode die Zahlen trennen und ein zweite Abrage machen...
SELECT name WHERE id IN (138, 63453, 736, 36347, 9567503)
Was ist schneller???
ich nehme mal an Version1, sicher bin ich mir aber nicht ganz, und wie schauts aus wenn ich 10 Spalten hätte???
Kommentar