webForumDet fria alternativet

Optimering: Select * eller Select fält

ASP

8 svar · 198 visningar · startad av Lukaspojken

Medlem sedan maj 20011 312 inlägg
Frågan#1

Blir det nån optimering om man skriver fältnamnen istället för stjärna när man hämtar data?

------------------
Alltid lär man sig något nytt varje dag...

Medlem sedan dec. 19995 874 inlägg
#2

Databasen slipper leta efter fältnamnen, så skillnad är det. Sedan kanske det är onödigt att fylla med onödig information som inte behövs?

------------------
Mvh
Patrik aka Brimba
<A HREF="http://www.brimba.nu/default.asp?oPID=poll&PollID=19" TARGET=_blank>Skulle du äta på restaurang, om det var rökförbud?
</A>Varför blir mina isbitar inte lika klara som i reklamen?

Medlem sedan dec. 200012 464 inlägg
#3

Vadå slipper leta? Om man anger kolumnnamn så måste ju dbms verifiera att dessa kolumner finns i tabellen.

Vinsten är man flyttar mindre data om man inte behöver alla kolumner.

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 19995 874 inlägg
#4

grr... :e

Jag hade för mig att när man anger alla fältnamn eller skriver * så är det ändå en liten, liten vinst i att skriva in fältnamnen.
Men jag kanske har fel?

------------------
Mvh
Patrik aka Brimba
<A HREF="http://www.brimba.nu/default.asp?oPID=poll&PollID=19" TARGET=_blank>Skulle du äta på restaurang, om det var rökförbud?
</A>Varför blir mina isbitar inte lika klara som i reklamen?

Medlem sedan juni 20019 024 inlägg
#5

Det måste väl bli en optimering om man anger fältnamnet. Om man skulle använda SELECT * i en databas med många poster borde det ju slöa ner minnet och servern åtminstone... eller?

------------------
Peter D

Medlem sedan juni 200152 inlägg
#6

det beror ju på, som kanske redan är konstaterat här, om man ska ha alla fälten i tabellen.
Ska man hämta alla fälten spelar det väl ingen större roll hur man skriver men det är ju lättare att bara skriva *. Men ska man bara ha ett fält av tio så är det ju självklart bättre att skriva fält-namnet.

------------------
jag är inte där du är

Medlem sedan juni 200117 inlägg
#7

"SELECT *" är slöare än "SELECT FOO". Spelar ingen roll om man hämtar allt lr inte. SELECT * anger juh inte namn, då förlorar man lite prestanda eftersom databasen själv måste hämta alla namn.
Som med all programmering så är det alltid bättre/snabbare med att deklarerade sak å ting. Desstu mer programmeraren själv tar hand om desstu mindre slipper ske "bakom kuliserna".

Dock är den prestand vinsten så pass liten att man lika gärna kan skriva SELECT *. (Man bör dock använda SELECT FOO när man har välbesök site + stor databas + seg server). Iofs bör en bra programmerare alltid sträva efter att vinna prestanda (dvs utan att förlora på andra plan) ;D

Men SELECT FOO är bättre än SELECT *, det var väl frågan från början =)

Fast vill man vinna prestanda bör man först å främst byta till ett snabbare webbhotel å byta från Access till SQL-databas innan man försöker vinna prestanda från SELECT * ect.

------------------
*g0sA*

[Redigerat av Fraja^ den 28 jun 2001]

Medlem sedan feb. 20001 590 inlägg
#8

Sen resulterar det ju i olika stora recordset!
SELECT ALL ger ett recordset där alla fält och dess värden är med.
SELECT [fält] ger bara de fält man anger.

Är det många poster och fält, så blir det säkert en liten prestandavinst.

Sen beror det mycket på hur väl man normaliserat databasen. Rätt gjorda tabeller och relationer gör att man kan få tag på mycket mer information både snabbare och enklare.

/T

------------------
WRITE_PORT_ULONG(devExt->Mymessage,SMART_WRITE_ACK);

Medlem sedan jan. 2001332 inlägg
#9

Hmmm....

Känns som om alla säger samma sak fast på en himla massa olika sätt...

:OO :p :e

------------------
Du lever bara en gång och den gången är nu!

264 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)