What about having a column for each genre, so tracks would look like: id, title, artist, gItalian, gInternational, g80, g70
the genres are of type "int" so 1 for yes 0 for no. then just do SELECT * FROM tracks WHERE g80 = 1 AND gItalian = 1 Not the most dynamic of solutions, but as your genre list wont change that often? should be ok. -- Dave ----- Original Message ----- From: "Giulio" <[EMAIL PROTECTED]> To: "MySQL List" <[EMAIL PROTECTED]> Sent: Monday, July 12, 2004 1:50 PM Subject: can you help me optimizing this query? > Hi all, > > I have an audio tracks info table, let's call it Tracks; > > every Track can have one or more ' Character' ( it is not a genre, it > is something like 'Italian' or 'International' or '80's' or 'evergreen' > ) > > so a track can be 'International' and 'Evergreen', or 'Italian' and > '70's') > > I have three tables to handle this: > > Track > Character > Track_Character ( the intermediate table to handle the Track-Characters > connection) > > Now, if I want to search all tracks, let's say by title, and have for > every track its data and its characters codes, I'm doing something > like: > > select track.*, track_character.id_character from track left join > track_character on track.track_id = track_character.track id where > track_title = '%something%' order by track_title > > this seems to work, but it is VERY VERY slow, and I'm working with only > 4000-5000 track records, most of them having only one track_character > record. It can last up to 120 seconds if I leave the title blank, > resulting on all tracks listed. > > Any Idea on how could I optimize this? > > Thanx in advance, > > Giulio > > Cantoberon Multimedia srl > http://www.cantoberon.it > Tel. 06 39737052 > > > -- > MySQL General Mailing List > For list archives: http://lists.mysql.com/mysql > To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED] > -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]