Visa ett inlägg
Oläst 2012-10-11, 14:48 #21
danjel danjel är inte uppkopplad
Medlem
 
Reg.datum: Nov 2003
Inlägg: 214
danjel danjel är inte uppkopplad
Medlem
 
Reg.datum: Nov 2003
Inlägg: 214
Citat:
Ursprungligen postat av jonssondesign Visa inlägg
"För övrigt så använd transaktioner med databasfrågorna. Annars kan du få korrupt data." - vad menar du med det?
Ja alltså tänk om din kod smäller eller stoppar av någon anledning t.ex i detta stycke:

$query = "SELECT id, advertiserProductUrl FROM products WHERE `new` = 1";
$select = mysql_query($query) or die(mysql_error());

Då kommer inte dina updates efter det att köra, men dina första inserts har körts och uppdaterat databasen.

Med transaktioner körs allt eller inget , typ denna princip

mysql_query("SET AUTOCOMMIT=0");
mysql_query("START TRANSACTION");

$a1 = mysql_query("INSERT INTO bla (id) VALUES('1')");
$a2 = mysql_query("INSERT INTO blabla(id) VALUES('2')");

if ($a1 and $a2) {
mysql_query("COMMIT"); //allt grönt , skriver ner allt till db
} else {
mysql_query("ROLLBACK"); //backar tillbaks allt efter "START TRANSACTION"
}

Kan inte så mycket om dem i mySQL men du måste nog köra InnoDB dessvärre för att använda transaktioner.
Det brukar rekommenderas att köra den tabelltypen generellt, kan inte alla detaljer men MyISAM är lämpligare för Selects för att den låser hela tabellen vid skrivningar till tabellen.


Citat:
Ursprungligen postat av jonssondesign Visa inlägg
"Kolla om det finns index på dessa kolumner där "where" används:" - ehm. say what what?
ooh! nej, inget index på varken new eller fresh. as you can se.
Index kan användas även vid Updates eller Deletes,
så om du har t.ex "update tbl where somecolumn = 99" och det inte finns ett index på den kolumnen då görs en scan på alla rader i hela tabellen. med ett index går det snabbare.
Men samtidigt om du lägger till fler index i tabellen kommer inserts gå segare för att den då måste uppdatera index..så detta är kanske ett gränsfall

I alla fall, om det funkar på Binero kanske du inte behöver göra så mycket pill i sql:en för att få det att funka vad gäller prestandabiten
danjel är inte uppkopplad   Svara med citatSvara med citat