Mysql. Огромная разница во времени выполнения посредством php и непосредственно в phpMyadmin

12 3
V
На сайте с 10.01.2012
Offline
85
371

Собственно суть в названии самой темы.

Есть некий запрос на чтение данных, который в phpMyadmin выполняется порядка 5 секунд. Но в то же время если его запустить с php-скрипта (в скрипте только запрос на считывание и более ничего), то он выполняется 6000 (полтора часа). А еще эти данные нужно обработать и вывести итоговые данные.

Можете объяснить почему такая большая разница во времени и как можно ее сократить?


S
На сайте с 23.05.2004
Offline
315
#1

Возможно в пхпмайадмине указан LIMIT , а в скрипте вытягиваются все сто миллионов записей. 

Без примерной структуры и самого запроса, без года скрипта - ничего особо не посоветуешь.

Это просто подпись.
tommy-gung
На сайте с 22.11.2006
Offline
295
#2
Stek #:
в пхпмайадмине указан LIMIT
но его автоматически подставляет. 0, 30 что ли
Здесь не могла быть ваша реклама
V
На сайте с 10.01.2012
Offline
85
#3
Stek #:

Возможно в пхпмайадмине указан LIMIT , а в скрипте вытягиваются все сто миллионов записей. 

Без примерной структуры и самого запроса, без года скрипта - ничего особо не посоветуешь.

Причем здесь год скрипта - банальная выборка pdo либо mysqli с одним запросом и более ничего.

Даже если ставлю в запросе

... LIMIT ХХХ

Пропорционально запрос выполняется по тому же таймингу.

temniy
На сайте с 15.03.2008
Offline
247
#4

Ничего нельзя сказать без кода php. Может там циклы или еще что. 

⭐ Лучший хостинг от 4 евро, VPS от 6 евро, VPN недорого - разные локации - любые карты - скидки до 20% - https://fornex.com/c/ffi2e3/ru/services/
S
На сайте с 23.05.2004
Offline
315
#5
Ну раз не при чем, то ищи проблему сам. Как понимаю ты же лучше знаешь :D
V
На сайте с 10.01.2012
Offline
85
#6
Stek #:
Ну раз не при чем, то ищи проблему сам. Как понимаю ты же лучше знаешь :D

Банальный "сложный" запрос... код вида:

// Формируем тест выборка
$data = $db->query("
        SELECT data,
        (Вложеная выборка вида SELECT),
...
        (Вложеная выборка вида SELECT)
        FROM table
        WHERE УСЛОВИЕ
LIMIT 10
");

Если выставить индексы для всех WHERE (тип данных DITETIME), то  запрос выполняется на %% 30 дольше.

LIMIT также замедляет выборку в среднем на %%50. Чистая выборка обрабатывается шустрее.

totamon
На сайте с 12.05.2007
Offline
437
#7
Varenik :

Можете объяснить почему такая большая разница во времени и как можно ее сократить?


это тебе к экстрасенсам нужно ну или гадалке...

зы. единственное объяснение это качество кода,  phpMyadmin  не рукожопы писали, поэтому он быстрее  😀

Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
V
На сайте с 10.01.2012
Offline
85
#8
totamon #:

это тебе к экстрасенсам нужно ну или гадалке...

зы. единственное объяснение это качество кода,  phpMyadmin  не рукожопы писали, поэтому он быстрее  😀

<?php
$from= microtime(true);
$db = new PDO(SETTINGS);
$data = $db->query(ЗАПРОС);
echo round(microtime(true) - $start, 4);
?>

Какая рукожопость в этих 4 строчках кода? Никакой больше обработки - банальная выборка и все.

totamon
На сайте с 12.05.2007
Offline
437
#9
Varenik #:

Какая рукожопость в этих 4 строчках кода? Никакой больше обработки - банальная выборка и все.

нужно не гадать, а искать причину... я в своей практике не раз сталкивался с сусликом которого невидно, но он есть))

для начала вывести запрос и сравнить с тем что в phpmyadmin формируется, или вставить запрос из phpmyadmin в скрипт.

дело явно не в php,  а в запросе

temniy
На сайте с 15.03.2008
Offline
247
#10
Varenik #:

Какая рукожопость в этих 4 строчках кода? Никакой больше обработки - банальная выборка и все.

Да, например, вот - не инициализированная переменная $start - вместо нее должна быть видимо $from.  

12 3

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