Snelheid


#1

Hallo allemaal,

Ik ben bezig met het maken van een eigen php zoekscritp voor de foondump MySQL database. Maar ik loop al vrij snel tegen een probleem aan, en dat is de snelheid.
Als ik het php script gebruik dat bij het foondump pakket zit, dan staan de gevonden vermeldingen in minder dan 1 seconde op het scherm. Met de code die ik zelf maak, duur het een paar minuten.
Hier is een voorbeeld van wat ik in elkaar gezet heb:[code]

test <?php $db = mysql_connect("localhost", "root", "***") or die ("verbinding mislukt"); mysql_select_db("dump", $db);

$number = $_GET[number];
if (!empty($number))
{
$number = str_replace("-", “”, str_replace(" ", “”, $number));
$phone_SQL = “SELECT * FROM white_phonenumber WHERE phone=$number”;
$phone_result = mysql_query($phone_SQL);
while($phone1 = mysql_fetch_array($phone_result))
{
echo $number
?>


<?php echo $phone1['id'] ?>
<?php }} mysql_close(); ?> [/code] Als ik naar de volgende url ga: http://localhost/test.php?number=0384287777 dan krijg ik de id's van alle vermeldingen van de rabobank in zwolle. Maar het duurt enkele minuten voor de resultaten op het beeld verschijnen. En dan heb ik nog niet eens het adres erbij gezocht.

Met de volgende code:[code]

test <?php $db = mysql_connect("localhost", "root", "***") or die ("verbinding mislukt"); mysql_select_db("dump", $db);

$number = $_GET[number];
if (!empty($number))
{
$number = str_replace("-", “”, str_replace(" ", “”, $number));
$phone_SQL = “SELECT * FROM white_subscriber WHERE phone=$number”;
$phone_result = mysql_query($phone_SQL);
while($phone1 = mysql_fetch_array($phone_result))
{
echo $number
?>


<?php echo $phone1['id'] ?>
<?php echo $phone1['lastname'] ?>
<?php echo $phone1['streetname'] ?> <?php echo $phone1['housenumber'] ?>
<?php echo $phone1['postalcode'] ?>
<?php echo $phone1['city'] ?>
<?php echo $phone1['phone'] ?>
<?php }} mysql_close(); ?> [/code]duurt het nog veeeeeeel langer. Wat doe ik nu fout??

Alvast bedankt voor de hulp.


#2

Hoi Why,

[quote]
dan staan de gevonden vermeldingen in minder dan 1 seconde op het scherm. Met de code die ik zelf maak, duur het een paar minuten. [/quote]

Heeft m.i. te maken met het ontbreken van indexen op de velden die jij extra gebruikt in de select query. Als je velden gebruikt waarop geen key/index staan gaat hij m.i. een tablescan uitvoeren. Tablescan is het sequentieel doorlopen van de database en dan kijken of de “selectierecord” aan de voorwaarde voldoet.

De vriendelijke groet Jan Marco