Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> оптимизация скипта, работа скрипта тормозит хостинг 
V
    Опции темы
yana
Дата 29.10.2010, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 16.11.2005

Репутация: нет
Всего: 0



Здравствуйте!
Есть база данных- библиотека, нужно из нее по запросу выбрать записи, значения есть не в каждой строке и не в каждом столбце, а вывод надо сделать в любом случае, я сделала вот таким побразом, но скрипт очень сильно тормозит работу хостинга. Не подскажете, как его оптимизировать? Мне нужно чтобы значения содержащие null не отражались в табличке
Код

$query = "SELECT DISTINCT aut.aut,tit.tit,auz.auz,pin.pin,soo.soo,miz.miz,vst.vst,yea.yea,pub.pub,sig.sig,ser.ser,soi.soi,noc.noc,nac.nac,ill.ill 
FROM keyss
LEFT JOIN aut ON keyss.cn=aut.cn
LEFT JOIN tit ON keyss.cn=tit.cn
LEFT JOIN auz ON keyss.cn=auz.cn
LEFT JOIN pin ON keyss.cn=pin.cn
LEFT JOIN soo ON keyss.cn=soo.cn
LEFT JOIN miz ON keyss.cn=miz.cn
LEFT JOIN vst ON keyss.cn=vst.cn
LEFT JOIN yea ON keyss.cn=yea.cn
LEFT JOIN pub ON keyss.cn=pub.cn
LEFT JOIN sig ON keyss.cn=sig.cn
LEFT JOIN ser ON keyss.cn=ser.cn
LEFT JOIN soi ON keyss.cn=soi.cn
LEFT JOIN noc ON keyss.cn=noc.cn
LEFT JOIN nac ON keyss.cn=nac.cn
LEFT JOIN ill ON keyss.cn=ill.cn
and ".$searchtype." like '%".$searchterm."%'";
  $result = mysql_query($query,$link);
}


echo ' 
<table align="center" border="1" width="600">'; 
  while($row = mysql_fetch_array($result))
  { 

$aut=((trim(stripslashes($row['aut'])) != null)? stripslashes($row['aut']) : "---" );
$auz=((trim(stripslashes($row['auz'])) != null)? stripslashes($row['auz']) : "---" ); 
$pin=((trim(stripslashes($row['pin'])) != null)? stripslashes($row['pin']) : "---" ); 
$soo=((trim(stripslashes($row['soo'])) != null)? stripslashes($row['soo']) : "---" ); 
$miz=((trim(stripslashes($row['miz'])) != null)? stripslashes($row['miz']) : "---" ); 
$vst=((trim(stripslashes($row['vst'])) != null)? stripslashes($row['vst']) : "---" ); 
$yea=((trim(stripslashes($row['yea'])) != null)? stripslashes($row['yea']) : "---" ); 
$pub=((trim(stripslashes($row['pub'])) != null)? stripslashes($row['pub']) : "---" ); 
$sig=((trim(stripslashes($row['sig'])) != null)? stripslashes($row['sig']) : "---" ); 
$ser=((trim(stripslashes($row['ser'])) != null)? stripslashes($row['ser']) : "---" ); 
$soi=((trim(stripslashes($row['soi'])) != null)? stripslashes($row['soi']) : "---" ); 
$noc=((trim(stripslashes($row['noc'])) != null)? stripslashes($row['noc']) : "---" ); 
$nac=((trim(stripslashes($row['nac'])) != null)? stripslashes($row['nac']) : "---" ); 
$ill=((trim(stripslashes($row['ill'])) != null)? stripslashes($row['ill']) : "---" ); 

  echo ' 
  <tr width="100" align="left">
  <td>
     '.stripslashes($row['pin']).'  
  </td>
  <td>
     '.stripslashes($row['aut']).'  
  </td>
  </tr>

  <tr align="left">
  <td>
     '.stripslashes($row['auz']).' 
  </td>
  <td>
&nbsp;&nbsp;&nbsp;'.stripslashes($row['tit']).'&nbsp;&frasl;&nbsp;'.stripslashes($row['soo']).'.&nbsp;&ndash;&nbsp;'.stripslashes($row['soi']).'.&nbsp;&ndash;&nbsp;'.stripslashes($row['miz']).'&nbsp;:&nbsp;'.stripslashes($row['pub']).',&nbsp;'.stripslashes($row['yea']).'.&nbsp;&ndash;&nbsp;'.stripslashes($row['noc']).'.&nbsp;'.stripslashes($row['nac']).'.&nbsp;&ndash;&nbsp;'.stripslashes($row['vst']).'&nbsp;&ndash;&nbsp;'.stripslashes($row['ill']).'&nbsp;&ndash;&nbsp;('.stripslashes($row['ser']).').</td>
  </tr><br>'; 
  } 
  echo '</table>'; 

   mysql_free_result($result); 
?>

PM MAIL   Вверх
skyboy
Дата 29.10.2010, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



в том виде, как есть сейчас, выбираются все  записи из keyss, к которой подключаются записи из других таблиц.
сколько там записей-то, в keyss этой?
не должно ли быть 
Цитата(yana @  29.10.2010,  06:28 Найти цитируемый пост)
and ".$searchtype." like '%".$searchterm."%'";

в секции WHERE вместо LEFT JOIN?
PM MAIL   Вверх
yana
Дата 29.10.2010, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 16.11.2005

Репутация: нет
Всего: 0



У меня так было раньше, но так как не везде есть данные, а таблички связываются по полю cn, то пришлось сделать LEFT JOIN, теперь соединяются все таблички, выходят данные по любому запросу и по автору и по заглавию и по ключевому слову, но вот пустые столбцы не получается изменить чтобы вывести данные в табличку и это тормозит работу. 
PM MAIL   Вверх
skyboy
Дата 29.10.2010, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



тебе надо выбрать объект со всеми дополнительными данными? поиск объекта задается парой searchtype/searchterm? сколько там записей-то в таблицах?
PM MAIL   Вверх
yana
Дата 29.10.2010, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 16.11.2005

Репутация: нет
Всего: 0



101500
PM MAIL   Вверх
skyboy
Дата 29.10.2010, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



окей, вернемся к ранее заданному вопросу: почему параметры поиска не в where, а в left join? 
PM MAIL   Вверх
yana
Дата 29.10.2010, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 16.11.2005

Репутация: нет
Всего: 0



База данных состоит из большого кол-ва таблиц, типа cn-индексное поле,  и name- данные, например автор, или заглавие, и т.д. все таблицы из 2 полей. И не во всех таблицах есть нужное поле cn по которому и соединяются эти таблицы. То есть есть пропуски, а значит если нужны все поля из всех таблиц, то приходится соединять по left join, запрос с where не выдает результат, хотя например точно знаешь что данная книга там есть. Я делала  такой запрос, с where, результаты были не всегда.
PM MAIL   Вверх
yana
Дата 9.11.2010, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 16.11.2005

Репутация: нет
Всего: 0



Все решила вот таким образом, вывела данные в файл, потом в отдельную таблицу, это, конечно, изврат, но больше ничего не смогла придумать.  Но все ищет и выводит. И не тормозит хостинг.
Код

SELECT aut.aut,auz.auz,tit.tit,pin.pin,soo.soo,miz.miz,vst.vst,yea.yea,pub.pub,ser.ser,soi.soi,noc.noc,nac.nac,
ill.ill
INTO OUTFILE 'd:\\vremen.csv'FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\\' LINES STARTING BY '' TERMINATED BY '\r\n'
FROM tit
LEFT JOIN aut ON tit.cn = aut.cn
LEFT JOIN auz ON aut.cn = auz.cn
LEFT JOIN pin ON tit.cn = pin.cn
LEFT JOIN soo ON tit.cn = soo.cn
LEFT JOIN miz ON tit.cn = miz.cn
LEFT JOIN vst ON tit.cn = vst.cn
LEFT JOIN yea ON tit.cn = yea.cn
LEFT JOIN pub ON tit.cn = pub.cn
LEFT JOIN ser ON tit.cn = ser.cn
LEFT JOIN soi ON tit.cn = soi.cn
LEFT JOIN noc ON tit.cn = noc.cn
LEFT JOIN nac ON tit.cn = nac.cn
LEFT JOIN ill ON tit.cn = ill.cn
WHERE tit.cn >0 

LOAD DATA INFILE 'd:\\vremen.csv' replace INTO TABLE vremen FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\\' LINES STARTING BY '' TERMINATED BY '\r\n'


{
$query = "SELECT distinct * FROM vremen WHERE  ".$searchtype." like '%".$searchterm."%'";
  $result = mysql_query($query,$link);
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0702 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.