Самый оптимизированный синтаксис MySQL

#php #mysql #optimization #syntax

#php #mysql #оптимизация #синтаксис

Вопрос:

Хотя я много искал в Интернете, я еще не совсем нашел ответ. В PHP вы можете оптимизировать свой вывод, например, путем ввода

echo 'This is a sentence by ',$name,' which is fast';

вместо

echo 'This is a sentence by $name which is very inefficient';

Мой базовый пример кода

 $server=english
mysql_query("INSERT INTO uz(id,email,pw,cook) VALUES('$id','$mail','$pw','$cook')");
  

Который использует двойные кавычки и имена переменных внутри операторов. Есть ли способ оптимизировать это или это «лучшая» версия? Каждая попытка, которую я пробовал, приводила к ошибкам mysql.

Комментарии:

1. ваш второй пример не будет работать. Переменные заменяются только в двойных кавычках.

2. Если вы не выполняете операцию размером с facebook, вы не увидите абсолютно никакой разницы между этими строками. И если вы используете facebook, вы сэкономите, возможно, несколько минут процессорного времени в год.

3. Время, необходимое PHP для анализа этой строки 100 наносекунд, может быть, несколько микросекунд. Запрос MySQL = от десятков до сотен миллисекунд (или, возможно, минут!), В зависимости от набора данных. Неправильный конец для оптимизации.

Ответ №1:

Это не имеет значения.

Такого рода оптимизация не оказывает никакого реального влияния на вашу производительность. Разница в производительности между различными методами конкатенации составляет микросекунды. Они вообще не играют никакой роли в реальном мире.

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

То же самое касается примера echo, который вы показываете. С точки зрения производительности нет заметной разницы, если вы не запустите его 100 000 раз (в этом случае вы все равно будете что-то делать неправильно). Если хотите, используйте свои собственные тесты microtime() .

Комментарии:

1. 1. Большие затраты на выполнение запросов — это накладные расходы сети и ожидание ответа mysql в миллисекундах или даже секундах — несколько наносекунд интерполяции строк — это наименьшее из ваших беспокойств.

Ответ №2:

правдивая обработка в микросекундах; окружение переменных в расширяющихся строках с {} помощью сэкономит синтаксическому анализатору один или два цикла, а также сократит путаницу между константами и ассоциативными ключами массива при использовании.

Например:

 $string = 'hi ' . $name . ' how are you?'; //fast
$string = "hi $name how are you?"; //very slightly slower
$string = "hi {$name} how are you?"; //very slightly faster than second example

$string = 'hi ' . $person['name'] . ' how are you?'; //fast
$string = "hi $person[name] how are you?"; //slightly slower and prone constant clashes
$string = "hi {$person['name']} how are you?"; //very slightly faster and not prone to clashes
  

во втором примере с ключом массива вы можете столкнуться с проблемами, если const name где-то объявлено a, поскольку интерпретатор не знает, на какой из них вы ссылаетесь, и использует константу по умолчанию.

Что касается базы данных, вы можете оптимизировать свой запрос, используя «`» вокруг имен полей и таблиц, что защищает от столкновения ключевых слов, а также обеспечивает более быструю интерпретацию (все еще в микросекундах).

Например:

 mysql_query("SELECT `id`,`name`,`date` FROM `table` WHERE `id` = {$id}");
  

Комментарии:

1. echo с запятыми действительно работает. это означает, что строки выводятся без предварительной конкатенации, и это немного быстрее, чем использование точки для конкатенации строк перед выводом. см. Руководство php.net/manual/en/function.echo.php