объединение 2 запросов в SQL - PullRequest
0 голосов
/ 06 февраля 2020

У меня 40к записей в моей базе данных. я написал 2 SQL запросов, чтобы достичь какого-то результата! К сожалению, его запуск занимает много времени, и сервер выдает ошибку тайм-аута!

Я новичок в SQL, поэтому любой может помочь объединить мои запросы, так что выполнение займет меньше времени!

вот мой код

$sql="SELECT Website, COUNT(*) FROM entry GROUP BY Website HAVING COUNT(*) = 2 "; 
        $run = mysql_query($sql);
        while($row=mysql_fetch_array($run))
        {
              $Website = $row['Website']; 
              $sql2 = "SELECT * FROM entry where Website= '$Website' GROUP BY Address ";
              $run2 = mysql_query($sql2);
              while($row=mysql_fetch_array($run2))
              {
                $id = $row['id'];
                $Website = $row['Website'];
                $Name = $row['Name'];
                $Address = $row['Address'];
                $Country = $row['Country'];
                $City = $row['City'];
              }  
         }  

Предложи мне!

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Одно ключевое правило при выполнении SQL запросов на стороне сервера (PHP) заключается в том, что никогда не следует выполнять SQL запрос внутри al oop. Что происходит, так это то, что для каждой итерации l oop сервер подключается и получает данные из базы данных. Это увеличивает количество операций ввода-вывода в базе данных, что приводит к медленной загрузке данных, что может даже привести к неработоспособности сервера при огромном размере данных.

Рассмотрите возможность использования правильного запроса, отсеивайте вещи из самого запроса и избегайте используя для этого PHP.

$sql2 = "SELECT * FROM entry where Website in (SELECT Website FROM entry GROUP BY Website HAVING COUNT(*) = 2) ";

Не волнуйтесь, так учатся все. Удачного кодирования!

0 голосов
/ 06 февраля 2020

Вы можете работать с этим. использовать в где условие.

$sql="SELECT * FROM entry where Website in (SELECT Website FROM entry GROUP BY Website HAVING COUNT(*) = 2) "; 
        $run = mysql_query($sql);
        while($row=mysql_fetch_array($run))
        {
                $id = $row['id'];
                $Website = $row['Website'];
                $Name = $row['Name'];
                $Address = $row['Address'];
                $Country = $row['Country'];
                $City = $row['City'];              
         }  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...