1 | |
SQL и PHP код, что быстрее?14.10.2013, 13:11. Показов 4134. Ответов 4
Метки нет (Все метки)
На сайте есть база данных MySQL. Сайт написан на PHP.
Необходимо выводить данные с базы отфильтрованные. Данные хранятся в 20 таблицах связанные между собой. Стоит вопрос о быстроте вывода отфильтрованных данных на страницу сайта. Первый способ. Можно сделать запрос к базе, объеденив через LEFT JOIN все таблицы и задав все параметры выбора. Полученную таблицу обработать в PHP коде в соответствии с заданной сортировкой и выложить на странице результат. Либо второй способ. Разбить запрос на несколько запросов к базе данных. Полученные таблицы обработать в PHP коде и так далее. Первый способ более долго (по идее) будет выполняться в SQL, чем второй (несколько запросов). Но второй способ будет дольше выполняться в PHP, так как те параметры выбора, которые не были сделаны в SQL надо сделать в PHP. Встает вопрос, как определить, какой же способ окажется в итоге быстрее? Или, может уже известно, какой способ быстрее?
0
|
14.10.2013, 13:11 | |
Ответы с готовыми решениями:
4
Что быстрее: DLookUp или SQL SELECT через что быстрее подключаться к sql servery? Что быстрее: макрос или код VBA ? На Unity можно оптимизировать код, что-бы он быстрее работал? |
9 / 9 / 0
Регистрация: 26.02.2010
Сообщений: 165
|
|
14.10.2013, 21:54 | 2 |
))) тестами...
вообще непонятно ничего, все размыто. а конкретика где? с чего взяли что mysql дольше? все всегда зависит от структуры бд, от структуры программы, и от оптимизации под железо mysql
0
|
14.10.2013, 22:19 [ТС] | 3 |
Я не говорил что быстрее, а что медленнее, я спрашиваю об этом.
Более конкретно. Обработка данных происходит в два этапа. Сначала по запросу SQL, потом результат запроса обрабатывается в PHP. Свести только к чему то одному, не получится. Теперь встает вопрос, если вся обработка кода состоит из двух часте: SQL и PHP, то как распределить задачи так, чтобы в сумме было наименьшее число времени. Теперь вводные. 20 таблиц с которых надо получить данные по фильтру. Данные, это порядка 30 полей по которым еще входные данные (в том числе массивы) на фильтрацию. Ну два варианта разбиения на две части выполнения, я уже написал. Если писать один большой запрос, то он будет выполняться долго, так как много будет пустых мест в таблице. Поэтому то и 20 таблиц. Но выведя все в одну таблицу легче написать код обработки этих данных. Если писать 20 запросов, то они в сумме быстрее выполнятся, но полученные данные придется дополнительно сортировать, проверять и фильтровать в PHP. Представим, что в первом случае запрос выполняется 100 секунд, а обработка 20 секунд. Во втором все запросы выполняются 60 секунд, а обработка 60 секунд. Вот так надо прийти к минимальной сумме. Вот здесь трудно, без метода тыка (написания кода и проверки работы), определить как поступить. Но тыкаться не хочется.
0
|
9 / 9 / 0
Регистрация: 26.02.2010
Сообщений: 165
|
|
14.10.2013, 23:17 | 4 |
незнаю. вы не даете данные какая нагрузка будет.
может там 100 строк, а может миллион, может там нагрузка 50 тыс запросов, а может 1 запрос в сек.
0
|
Заблокирован
|
|
15.10.2013, 21:06 | 5 |
Как правило все наоборот: засасывается масса лишней инфы вследствии декартова "размножения". Но вам уже правильно написали - только тесты. Потому что логика приложения и конкретные параметры не релевантны. МОжет у вас там вообще нет индексов - тогда проще засосать вообще все и по-быстрому выкинуть лишнее, может у вас все грамотно проиндексировано и запрошено только нужное...
0
|
15.10.2013, 21:06 | |
15.10.2013, 21:06 | |
Помогаю со студенческими работами здесь
5
Php+mysql что будет если запрос SELECT выполнится быстрее чем UPDATE (в разных потоках) Дружба Denwer(PHP 5.3.3) с MSSQL 2008 R2. Не удаётся установить подключения к MS SQL через PHP код PHP код - код есть, а что с ним делать неизвестно, вопросов не имею Запуск процесса что лучше? что быстрее? что надежнее? Winexec CreateProcess ShellExecute Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |