Toon posts:

[PHP/MYSQL] Kan dit sneller?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb meer dan 90.000 records in m'n database, en ik wil een nieuwe future maken voor m'n site. Alleen daarvoor moet ik een nieuwe tabel maken.

Hieronder staat mijn update.php script, ik denk dat jullie wel zien wat ik bedoel.
Alleen dit gaat ontzettend traag, kan dit niet op een snellere manier?
PHP:
1
<?$select = mysql_query("SELECT * FROM releases");while($list = mysql_fetch_object($select)) {    $var = "$list->title";    $groups  = explode("-",$var);    $lastword = array_pop($groups);    if (!strstr($var, "-")) {        $lastword = "";    } else {        mysql_query("UPDATE releases SET groupname='$lastword' WHERE title='$var'");        echo "<li>$lastword\n";    }}?>

  • mph_rbi
  • Registratie: Januari 2001
  • Niet online

mph_rbi

dus ...

weet je zeker dat je echt 'select * from' wilt doen dan?

dus ...


Verwijderd

Topicstarter
Op vrijdag 26 april 2002 00:58 schreef mph_rbi het volgende:
weet je zeker dat je echt 'select * from' wilt doen dan?
Ja ok, maar met alleen 'select title from' gaat het ook niet echt snel.

  • _cyclops_
  • Registratie: Mei 2000
  • Laatst online: 07-03-2025
mysql_fetch_object is niet zo snel, misschien moet je daar is mysql_Fetch_Assoc van maken, die is 't snelste dacht ik.. en je hebt die object spullen hier _zeker_ niet nodig....

Waarom doe je trouwens die explode() en die array_pop, dit lijken me ook wel trage functies

'k begrijp dat je het geen achter de '-' wil hebben?
dit kun je dan beter met strpos() doen denk ik...

Verwijderd

Topicstarter
Nee, ik moet juist het gedeelte uit de $var halen achter de laatste - :)

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 00:58
Op vrijdag 26 april 2002 02:23 schreef 4dd1cT het volgende:
Nee, ik moet juist het gedeelte uit de $var halen achter de laatste - :)
strrpos :? :P

Verwijderd

Topicstarter
Op vrijdag 26 april 2002 02:47 schreef FlamerX het volgende:

[..]

strrpos :? :P
Mja, maar dat is mijn probleem niet..

  • tomato
  • Registratie: November 1999
  • Niet online
code:
1
UPDATE releases SET groupname=eenleukefunctie(title);

Kijk eens rond in de MySQL manual.

Een andere (ranzige oplossing) is om het pas om te zetten wanneer je toch al een record aanspreekt.

Dus iets als
code:
1
2
3
if (groupname is null) {
   mysql->update bla bla
}

ergens in je script plaatsen. Na een tijdje heb je ze bijna allemaal gehad :)

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

teneerste neem ik aan dat je dit alleen wilt op records die nog geen group toekenning hebben, dus dat kan je meenemen in je select.
Nog beter lijkt me tijdens het creeren van het record dit veld te vullen.

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Wat dacht je hiervan:
code:
1
2
3
update releases
set    groupname = right(title,locate('-',reverse(title)))
where  groupname is null

dus: neem van de title het aantal karakters vanaf rechts, waarbij het aantal wordt bepaald door te zoeken in de reversed title.
Ik heb where groupname is null opgenomen omdat je volgns mij alleen die wilt doen die nog niet bepaald zijn

Snappie?
Pagina: 1