Tjena! Utan att ha testat skulle jag nog spontant säga att bägge sätten blir samma resultat. Den sammanlagda tiden för att utföra beräkningarna är så extremt mycket mindre än tiden för att behandla datan, vilket gör det mer eller mindre försumbart. Tack för svaret.Indexering av många columner?!?
Har en liten fundering.
Säg att jag en tabell som ser ut ungefär så här:
id (int, primary)
data1 (int)
data2 (int)
data3 (int)
data4 (int)
data5 (int)
data6 (int)
Jag vill ha ut alla värden ur tabellen där data1 * data2 * ... * data6 != 0
d.v.s att inget data värde får vara noll.
hur ska jag skapa indexeringen och hur ska jag forumulera query'n?
query = "select * from table where (data1 * data2 * data3 * data4 * data5 * data6) <> 0"
eller
query = "select * from table where data1 <> 0 and data2 <> 0 and ... data6 <> 0"
eller kanske något bättre sätt...
Jag är i rätt stort behov av att den utförs relativt snabbt.
//JonasSv: Indexering av många columner?!?
Däremot kan du fundera på att lagra det på annat sätt, om det är mycket viktigt att göra detta villkorstest så snabbt som möjligt. En kolumn som innehåller produkten av de övriga kolumnerna, eller möjligen enbart en boolean om produkten är 0 eller ej, med ett index på gör ju att du enbart behöver testa typ WHERE dataProdukt <> 0, vilket gör att du enbart behöver läsa in en kolumn (samt slipper göra beräkningarna) och på så sätt vinner tid.
Dock måste du ju se till att innehållet i den kolumnen stämmer överens med de övriga kolumnerna. I SQL Server 2000 kan du exempelvis skapa en beräknad kolumn med ett index på och på så sätt ha den automatiskt uppdaterad, annars får du helt enkelt själv räkna ut den och uppdatera den samtidigt som du uppdaterar andra rader.Sv: Indexering av många columner?!?
Använder mig själv av MySQL...
Hur ser kommandot ut för att skapa en beräknad column i SQL 2000 ut? Tänkte att det borde vara ungefär lika om det nu finns i MySQL.
//Jonas