2013-04-23 12 views
-2

Может ли кто-нибудь сказать, что представляет собой средний процент разницы в скорости SQL по сравнению с PHP или наоборот. Под «разностью скоростей» я имею в виду во время обработки данных.временная разница во времени между SQL и PHP

Мне нужно управлять сайтом с огромной базой данных. Это первый раз, когда я сталкиваюсь с огромной базой данных. Мои знания о PHP в десять раз лучше, чем мой SQL, если сопоставимы. По этой причине я всегда манипулировал данными из своих PHP-скриптов.

Например, я решил использовать класс для хранения данных изображений из таблицы «картинка». Использование PDO и fetchMode FETCH_CLASS, я могу манипулировать извлеченными данными из конструктора. Одно поле - это размер изображения в виде строки типа "widthxheight". В моем конструкторе я использую метод split для хранения двух свойств в отдельных переменных. Поскольку существует много строк, я хотел бы знать, было бы предпочтительнее, чтобы это расщепление выполнялось непосредственно из инструкции выборки кода SQL.

Предположим, у меня есть более 10 тыс. Строк, будет ли это изменение эффективным? или я могу придерживаться PHP для этой цели?

+1

Ширина/высота должны быть двумя отдельными столбцами int, а не одной строкой с магическим значением! Если вам нужно значение строки, создайте * это * внутри вашего php-класса, а не наоборот! –

+0

Если бы я был дизайнером таблицы, я бы сделал это :-) – user544262772

+0

Он должен быть построен как @FrancisAvila. Например, используя ваш текущий метод, попробуйте запросить все изображения с высотой или шириной выше 1024. –

ответ

1

Здесь нет жесткого правила. Некоторые операции будут намного быстрее в SQL, некоторые из них будут быстрее в PHP, а разница в скорости будет сильно различаться.

Сценарий, который вы описываете, не должен иметь большого значения в любом случае, поэтому вы должны сделать это любым способом, чтобы сделать наиболее понятный и удобный код. (Возможно, в PHP, как вы это делаете сейчас.)

Однако способ, которым ширина и высота хранится в БД, ужасен и неправилен. Если это характерно для дизайна базы данных, с которым вам приходится иметь дело, ожидайте, что будете работать над некоторой нестабильностью.

2

Я думаю, в вашем случае это будет огромная разница:

Вы выбираете N строк. Вы меняете одно значение в одной строке. Это приведет к N обновлениям запросов, возможно, к N транзакциям.

Если вы определили один запрос на обновление, вы можете обновить N строк в пределах одного оператора и одной транзакции.

Это будет быстрее.

+0

Я что-то упустил? Я взял вопрос, учитывая его пример, чтобы «разделить это значение (' widthxheight') в sql или php, когда я запрашиваю его из базы данных? » Конечно, обновление в нескольких строках будет лучше, чем обновление по одной строке за раз. Но в post/example нет ни одного «обновления». –

+0

Расщепление в PHP медленнее, как упоминалось выше, по сравнению с 'UPDATE my table set width = substr (withheight, 0,2)' height = substr (withheight, 3,2) ' –

+0

У меня нет команды SQL для найдите положение «x», поэтому я взял на себя жесткие позиции для x. –

0

Я сомневаюсь, что было бы достаточно разницы с материей. Однако знайте, что в sql это будет несколько вызовов функций для репликации функции разделения (найти N-й делитель и подстроку между этим и следующим экземпляром демиметра), поскольку sql не имеет функции split и не поддерживает несколько значений в столбец. И это нужно было бы сделать для каждого столбца. Если значения разделены запятыми, вы можете использовать find_in_set, но все же несколько вызовов функций.

+0

Был ли вопрос о разделении одного значения при чтении в PHP или SQL? Подумал, что речь идет о модификации множества строк. –

Смежные вопросы