Можно ли оптимизировать запросы? mysql и php

chemax
На сайте с 07.01.2009
Offline
206
734

Вот вопрос. Можно ли как нибудь уменьшить количество запросов не меняя структуры бд. А то как то мне кажется много получилось.

//на входе две переменные $table1_title и $table2_title
//проверяем есть ли такая запись в table1
$sql = @mysql_query("SELECT * FROM `table1` WHERE `table1_title` = '$table1_title'");

if(mysql_num_rows($sql) == 0){
//если такой записи нет то добавляем
$sql = mysql_query("INSERT INTO `table1` SET `table1_title`='$table1_title')");
//узнаем номер этой записи
$sql = mysql_query("SELECT * FROM `table1` WHERE `table1_title` = '$table1_title'");
$row = mysql_fetch_array($sql);
$table1_id = $row['table1_id'];
$table1_count = 0;
}
else
//если такая запись есть то узнаем номер этой записи и количество записей в table2
$sql = mysql_query("SELECT * FROM `table1` WHERE `table1_title` = '$table1_title'");
$row = mysql_fetch_array($sql);
$table1_id = $row['table1_id'];
$table1_count = $row['table1_count'];
}
//проверяем есть ли запись в table2 с ид из table1 и
$sql = mysql_query("SELECT * FROM `table2` WHERE `table2_id_table1` = '$table1_id' and `table2_title` = '$table2_title'");
if(mysql_num_rows($sql) == 0){
//если записи такой в table2 нет
$table1_count++;
$sql = mysql_query("INSERT INTO `table2` SET `table2_id_table1` = '$table1_id', `table2_title` = '$table2_title'");

$sql = mysql_query("UPDATE `table1` set `table1_count`='$table1_count' where `table2_id_table1` = '$table1_id'");}
Качественный хостинг, VPS и сервера. (http://ihc.ru/?ref=569)
ПЗ
На сайте с 10.10.2006
Offline
92
#1

1.


$sql = mysql_query("SELECT * FROM `table1` WHERE `table1_title` = '$table1_title'");
$row = mysql_fetch_array($sql);
$table1_id = $row['table1_id'];

заменить на


$table1_id = mysql_insert_id();

2. //если такая запись есть то узнаем номер этой записи и количество записей в table2

А зачем снова тот же запрос делать? Используйте уже имеющиеся данные

Автомобили в России (http://www.autobb.ru/). Спецтехника BIZ - вся строительная, дорожная, коммунальная техника (http://www.spectehnika.biz/) и другая спецтехника в одном месте.
chemax
На сайте с 07.01.2009
Offline
206
#2

//на входе две переменные $table1_title и $table2_title

//проверяем есть ли такая запись в table1
$sqlt1 = @mysql_query("SELECT * FROM `table1` WHERE `table1_title` = '$table1_title'");

if(mysql_num_rows($sqlt1) == 0){
//если такой записи нет то добавляем
$sql = mysql_query("INSERT INTO `table1` SET `table1_title`='$table1_title')");
//узнаем номер этой записи
$table1_id = mysql_insert_id();
$table1_count = 0;
}
else
//если такая запись есть то узнаем номер этой записи и количество записей в table2
$row = mysql_fetch_array($sqlt1);
$table1_id = $row['table1_id'];
$table1_count = $row['table1_count'];
}
//проверяем есть ли запись в table2 с ид из table1 и
$sql = mysql_query("SELECT * FROM `table2` WHERE `table2_id_table1` = '$table1_id' and `table2_title` = '$table2_title'");
if(mysql_num_rows($sql) == 0){
//если записи такой в table2 нет
$table1_count++;
$sql = mysql_query("INSERT INTO `table2` SET `table2_id_table1` = '$table1_id', `table2_title` = '$table2_title'");

$sql = mysql_query("UPDATE `table1` set `table1_count`='$table1_count' where `table2_id_table1` = '$table1_id'");}

-2 запроса. спасибо)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий