@ylebedev

Php+MYSQL, при запросе — грузит процессор на 100%. Как быть?

Установлен PHP+MYSQL+LARAVEL (XAMMP).

запрос через LARAVEL

$list1 = DB::select( DB::raw(
"SELECT
pat.fam,
pat.otchestvo,
pat.name As namego,
pat.id,
spr.name,
spr_1.name As name2,
uslugi.dateout,
uslugi.stoim,
uslugi.skidka,
uslugi.summa,
uslugi.ids
FROM uslugi
INNER JOIN pat
ON uslugi.pat = pat.id
INNER JOIN spr
ON uslugi.proced = spr.ids
INNER JOIN spr spr_1
ON uslugi.usvrachi = spr_1.ids
WHERE spr.category = 'proced'
AND spr_1.category = 'vrachi'
AND spr.del = 0
AND spr_1.del = 0
AND uslugi.ok = 1
AND uslugi.vrach_talon = 1
AND uslugi.pat = :patid ORDER BY `uslugi`.`dateout` DESC"), array(
'patid' => $patid,
));

ОТВЕТ 18 секунд

тот же запрос в phpmyadmin на том же сервере.
или из программы dbForge
ответ 0.3 секунды.

В чем проблема?

пробую через PDO

echo " ".microtime(true);
$dbh = new PDO('mysql:host=localhost;dbname=base1', 'admin', '1234');
echo "
".microtime(true);
foreach($dbh->query("SELECT
pat.fam,
pat.otchestvo,
pat.name As namego,
pat.id,
spr.name,
spr_1.name As name2,
uslugi.dateout,
uslugi.stoim,
uslugi.skidka,
uslugi.summa,
uslugi.ids
FROM uslugi
INNER JOIN pat
ON uslugi.pat = pat.id
INNER JOIN spr
ON uslugi.proced = spr.ids
INNER JOIN spr spr_1
ON uslugi.usvrachi = spr_1.ids
WHERE spr.category = 'proced'
AND spr_1.category = 'vrachi'
AND spr.del = 0
AND spr_1.del = 0
AND uslugi.ok = 1
AND uslugi.vrach_talon = 0
AND uslugi.pat = 60258 ORDER BY `uslugi`.`dateout` DESC") as $row);
print_r($row);

echo "
".microtime(true);

1414614346.7337 - подкл к базе

1414614346.7337 пошел цикл
1414614366.7087 закончик

366-346 = 20

Запустил из консоли php

C:\xampp\php>
C:\xampp\php>php C:\xampp\pub\test.php
1414618574.0765

1414618574.0785
1414618591.9187

97-74 = 23

Все! Спасибо! Вопрос решился установкой чистого 64бит mysql, на чистое железо с Win2008-64R2 serv.

1414625215.1427
1414625215.1567

1414625218.2285

Y - в уравнении искать не буду. нет времени.
Что то странное со сборками LAMP. (xammp) - может именно моей конкретной версии.
  • Вопрос задан
  • 2922 просмотра
Пригласить эксперта
Ответы на вопрос 3
@red_led
Возможно, дело в том, что phpmyadmin выполняя запросы добавляет в них LIMIT. Сколько всего строк в результате? INNER JOIN даёт произведение множеств и при отсутствии лимита msql вынужден проверять все комбинации, что много даже при наличии индексов.
Ответ написан
@ylebedev Автор вопроса
Все! Спасибо! Вопрос решился установкой чистого 64бит mysql, на чистое железо с Win2008-64R2 serv.

1414625215.1427
1414625215.1567

1414625218.2285

Y - в уравнении искать не буду. нет времени.
Что то странное со сборками LAMP. (xammp) - может именно моей конкретной версии.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы