Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Выбор исходя из условия отсутствия.

Сообщения:  [1-4] 

 
 автор: Владимир55   (03.03.2009 в 15:10)   письмо автору
 
   для: Владимир55   (03.03.2009 в 14:33)
 

К сожалению, вылетает 504 Gateway Time-out...
При том, что сейчас всего лишь середина дня и к вечеру посетителей будет еще больше, так что ресурсоемкость еще возрастет.

Получается, что от этой функции подсчета уникальных новых посетителей, осуществить которую я пытался двумя разными способами, придется отказаться вследствие ее чрезвычайно высокой ресурсоемкости.

А созданный Вами код мне ОЧЕНЬ понравился и взял его на вооружения как образец построения запросов такого типа.

Спасибо!

  Ответить  
 
 автор: Владимир55   (03.03.2009 в 14:33)   письмо автору
 
   для: Trianon   (03.03.2009 в 01:29)
 

Корректировка сообщения

  Ответить  
 
 автор: Trianon   (03.03.2009 в 01:29)   письмо автору
 
   для: Владимир55   (02.03.2009 в 22:55)
 

$sql = "
SELECT DISTINCT ip FROM log_vh
    WHERE time >= '$seg_sec' AND ip NOT IN (
        SELECT ip FROM ip_arh
          WHERE dat_arh > '$vher_dat' AND dat_arh < '$dat_arh'
       ) ";


Можно и с LEFT JOIN вариант написать, но сомневаюсь, что он будет оптимальнее... хотя...

$sql = "
SELECT DISTINCT l.ip 
  FROM log_vh l 
  LEFT JOIN ip_arh a 
    ON l.ip = a.ip AND  a.dat_arh > '$vher_dat' AND a.dat_arh < '$dat_arh'
    WHERE l.time >= '$seg_sec' AND a.ip IS NULL 
";


Интересно сравнить, что быстрее, и сильно ли.

  Ответить  
 
 автор: Владимир55   (02.03.2009 в 22:55)   письмо автору
 
 

Есть таблица log_vh с полями id, time, ip
И есть таблица ip_arh с полями id, dat_arh, ip

Нужно найти в таблице log_vh все уникальные значения ip, для которых
time >= '$seg_sec'.


Другим условием выборки является тот факт, что в таблице ip_arh в диапазоне
dat_arh > '$vher_dat' AND dat_arh < '$dat_arh 
не должно быть таких же значений ip.

С LEFT JOIN конструкция вообще не получилась, и ничего не выдает этот код:
    $res = mysql_query("SELECT DISTINCT log_vh.ip
    FROM log_vh, ip_arh
    WHERE log_vh.ip != ip_arh.ip
    AND log_vh.time >= '$seg_sec'
    AND ip_arh.dat_arh > '$vher_dat'
    AND ip_arh.dat_arh < '$dat_arh ' ");
    while($row = mysql_fetch_assoc($res))  echo  "<br> ", $row['ip'];

  Ответить  

Сообщения:  [1-4] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования