Mysql. Огромная разница во времени выполнения посредством php и непосредственно в phpMyadmin
Varenik
243
Собственно суть в названии самой темы.
Есть некий запрос на чтение данных, который в phpMyadmin выполняется порядка 5 секунд. Но в то же время если его запустить с php-скрипта (в скрипте только запрос на считывание и более ничего), то он выполняется 6000 (полтора часа). А еще эти данные нужно обработать и вывести итоговые данные.
Можете объяснить почему такая большая разница во времени и как можно ее сократить?
Stek
Возможно в пхпмайадмине указан LIMIT , а в скрипте вытягиваются все сто миллионов записей.
Без примерной структуры и самого запроса, без года скрипта — ничего особо не посоветуешь.
tommy-gung
Stek #: в пхпмайадмине указан LIMIT
но его автоматически подставляет. 0, 30 что ли
Varenik
Stek #:
Возможно в пхпмайадмине указан LIMIT , а в скрипте вытягиваются все сто миллионов записей.
Без примерной структуры и самого запроса, без года скрипта — ничего особо не посоветуешь.
Причем здесь год скрипта — банальная выборка pdo либо mysqli с одним запросом и более ничего.
Даже если ставлю в запросе
... LIMIT ХХХ
Пропорционально запрос выполняется по тому же таймингу.
temniy
Ничего нельзя сказать без кода php. Может там циклы или еще что.
Stek
Ну раз не при чем, то ищи проблему сам. Как понимаю ты же лучше знаешь 😀
Varenik
Stek #: Ну раз не при чем, то ищи проблему сам. Как понимаю ты же лучше знаешь 😀
Банальный «сложный» запрос… код вида:
// Формируем тест выборка $data = $db->query(" SELECT data, (Вложеная выборка вида SELECT), ... (Вложеная выборка вида SELECT) FROM table WHERE УСЛОВИЕ LIMIT 10 ");
Если выставить индексы для всех WHERE (тип данных DITETIME), то запрос выполняется на %% 30 дольше.
LIMIT также замедляет выборку в среднем на %%50. Чистая выборка обрабатывается шустрее.
totamon
Varenik :
Можете объяснить почему такая большая разница во времени и как можно ее сократить?
это тебе к экстрасенсам нужно ну или гадалке…
зы. единственное объяснение это качество кода, phpMyadmin не рукожопы писали, поэтому он быстрее 😀
Varenik
totamon #:
это тебе к экстрасенсам нужно ну или гадалке…
зы. единственное объяснение это качество кода, phpMyadmin не рукожопы писали, поэтому он быстрее 😀
Varenik
Собственно суть в названии самой темы.
Есть некий запрос на чтение данных, который в phpMyadmin выполняется порядка 5 секунд. Но в то же время если его запустить с php-скрипта (в скрипте только запрос на считывание и более ничего), то он выполняется 6000 (полтора часа). А еще эти данные нужно обработать и вывести итоговые данные.
Можете объяснить почему такая большая разница во времени и как можно ее сократить?
Stek
Возможно в пхпмайадмине указан LIMIT , а в скрипте вытягиваются все сто миллионов записей.
Без примерной структуры и самого запроса, без года скрипта — ничего особо не посоветуешь.
tommy-gung
в пхпмайадмине указан LIMIT
но его автоматически подставляет. 0, 30 что ли
Varenik
Возможно в пхпмайадмине указан LIMIT , а в скрипте вытягиваются все сто миллионов записей.
Без примерной структуры и самого запроса, без года скрипта — ничего особо не посоветуешь.
Причем здесь год скрипта — банальная выборка pdo либо mysqli с одним запросом и более ничего.
Даже если ставлю в запросе
Пропорционально запрос выполняется по тому же таймингу.
temniy
Ничего нельзя сказать без кода php. Может там циклы или еще что.
Stek
Varenik
Ну раз не при чем, то ищи проблему сам. Как понимаю ты же лучше знаешь 😀
Банальный «сложный» запрос… код вида:
Если выставить индексы для всех WHERE (тип данных DITETIME), то запрос выполняется на %% 30 дольше.
LIMIT также замедляет выборку в среднем на %%50. Чистая выборка обрабатывается шустрее.
totamon
Можете объяснить почему такая большая разница во времени и как можно ее сократить?
это тебе к экстрасенсам нужно ну или гадалке…
зы. единственное объяснение это качество кода, phpMyadmin не рукожопы писали, поэтому он быстрее 😀
Varenik
это тебе к экстрасенсам нужно ну или гадалке…
зы. единственное объяснение это качество кода, phpMyadmin не рукожопы писали, поэтому он быстрее 😀
Какая рукожопость в этих 4 строчках кода? Никакой больше обработки — банальная выборка и все.
totamon
Какая рукожопость в этих 4 строчках кода? Никакой больше обработки — банальная выборка и все.
нужно не гадать, а искать причину… я в своей практике не раз сталкивался с сусликом которого невидно, но он есть))
для начала вывести запрос и сравнить с тем что в phpmyadmin формируется, или вставить запрос из phpmyadmin в скрипт.
дело явно не в php, а в запросе
temniy
Какая рукожопость в этих 4 строчках кода? Никакой больше обработки — банальная выборка и все.
Да, например, вот — не инициализированная переменная $start — вместо нее должна быть видимо $from.