Tabella SQL con voce “elenco” vs tabella SQL con una riga per ogni voce

Ho una tabella Sqlite cui ogni riga è la forma di:

 value, "a,b,c,d,e,f,g,h,i,j", value3, value4 

Dove le mie query cercano un abbinamento di valori, %b% utilizzando LIKE . È più efficiente in termini di tempo di interrogazione avere invece una tabella in cui ogni riga è una permutazione:

 value, a, value3, value4 ... value, j, value3, value4 

In modo che le mie query ora valgano, b usando l’operatore = questa volta.

Come nota, il caso d’uso a cui sono interessato ha ~ 10.000 righe attualmente in cui ogni elemento “list” ha in media 8 voci. Ho taggato sia Sqlite che MySQL perché ho un problema simile sia per un db con MySQL che per Sqlite .

Dove le mie query cercano un abbinamento di valori,% b% utilizzando LIKE. È più efficiente in termini di tempo di interrogazione avere invece una tabella in cui ogni riga è una permutazione:

Sicuramente. Poiché le query di tipo LIKE ‘% something%’ non possono utilizzare gli indici . Quindi le tue occhiate saranno molto lente. Se questo non è abbastanza, stai usando un pattern anti RDBMS. maggiori dettagli qui: la memorizzazione di una lista delimitata in una colonna di database è davvero così brutta?

dopo aver suddiviso la colonna ‘CSV’ in colonne separate, puoi procedere ulteriormente normalizzando il database.