FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Medlem
|
Vill bara veta det en gång för alla. Alltid grubblat på det.
Är PHP-kod:
PHP-kod:
|
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Klarade millennium-buggen
|
Nej, det ska det inte vara. SQL-motorn ska optimera detta automatiskt och därmed välja att använda indexet på items.id eftersom det bör vara pk i tabellen items, men den måste absolut vara indexerad med unikt index. Värdet från trade.part behöver inte vara indexerat i den här frågan, men jag skulle nog lägga ett non-unikt index på den i alla fall. Det brukar jag göra på alla fk. eftersom det sker uppslag mot dem hela tiden.
Senast redigerad av Conny Westh den 2013-02-13 klockan 21:04 |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Mycket flitig postare
|
Bör båda i en loop som varvar 100000 ggr och jämför tidsskillnaden. Se till att du gör det utan att det finns annat som belastar databasen under tiden bara.
Gör du testet flera gånger så kommer du troligen se att det diffar marginellt åt det ena och det andra hållet från gång till gång. |
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Medlem
|
Tack conny!
![]() Kan man skriva querys på detta sätt? Har ej fått någon bra uppfattning om vad som gäller när man vill hämta saker i en annan tabell(computer, items) beroende på ett värde i den första tabbellen(trade) PHP-kod:
|
||
![]() |
![]() |
![]() |
#5 | |||
|
||||
Har WN som tidsfördriv
|
Båda värdena i ON-avsnittet bör ju vara index samtliga fall om man har en vettig databasdesign och skriver vettiga frågor.
Jag tycker det känns mest logiskt att kolumnen i tabellen som joinas först. Detta är för att jag tycker det känns mest logiskt och semantiskt korrekt att ha det "okända" värdet först och värdet man testar emot sist. Jämför med vanliga IF-satser - Där skriver jag mycket hellre if($var === TRUE) än if(TRUE === $var) av samma anledning. Med detta är vad jag vet inget som påverkar prestandan på något sätt, utan det är bara min preferens. |
|||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Medlem
|
Hittade en intressant sida
http://maettig.com/code/php/php-perf...benchmarks.php Men en del av databasdesignen ser ut såhär: trade är en tabell som håller datorer eller datordelar(som bestäms av trade.part). Om trade.part == 1(det är en data) Annars en datordel. Beroende på vilket det här hämtar man data om datordelen eller datorn(namn, egenskaper osv..). |
||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Klarade millennium-buggen
|
Citat:
Jag har bytt namn på kolumnerna som bara heter id i din kod och lagt till tabellens namn på dem så man ser vad det är för id. Kod:
SELECT part, trade_desc, posted FROM trade JOIN computer ON trade.part = computer.computer_id WHERE trade.part = 0 UNION SELECT part, trade_desc, posted FROM trade JOIN items ON trade.part = items.items_id WHERE NOT trade.part = 0 ORDER BY posted ASC |
||
![]() |
![]() |
Svara |
|
|