PHP в деталях



         

Комментарии к статье ""


30.12.2000 06:16  Bls

mysql_num_rows(mysql_query("SELECT id FROM table WHERE field LIKE '%$v%'"));

ну кто же так делает. есть в sql конструкция count: select count(id) as kolichestvo from table where field LIKE '%$v%'

Ответ DL:

...А потом придется лишний раз вытаскивать массив и из него брать элемент.
, пункт 18. Лишние переменные - лишняя память.

31.12.2000 03:31  Bls

В той конструкции которой пользуешься ты нагружаетя не только память:

mysql приходится выполнить выборку всех id удовлетворяющих условию. Потом сохранить их в ожидании пока Вы к ним не обратитесь. (предположим что это 20 целых чисел).

В противовес этому при использвании count mysql хранит 1 целое число. Убедил ? :)

31.12.2000 03:33  Bls

получился разнабой (ты, Вы)

надеюсь Вы не в обиде :))

Ответ DL:

Да нет. Просто imho код более читаем, а внутри mysql производительность та же - либо делается группировка, либо подсчет кол-ва строк. К тому же не надо делать mysql_free_result (а если база большая, это необходимо). Так что, это дело вкуса, и того, кому как удобнее.

6.1.2001 23:43  Sergey  []

Если говорить о поиске, то интересно было бы узнать не о SELECT из БД, а о поиске как таковом. К примеру - если требуется быстро искать на PHP в "куче текстовых файлов", то как это делается (индексация в той же базе и тд)

Ответ DL:

Мне не совсем понятно определение "поиск как таковой". Чем SELECT не поиск? :) А для быстрого поиска в файлах есть хорошо отработанные утилиты, как .

12.1.2001 13:22  Axel  []

А почему символы с x7F по xFF стали "ненормальными" ?

или неправильно понял смысл функции $search = preg_replace("/[^(w)|(x7F-xFF)|(s)]/", " ", $search); ?

Best regards.

Ответ DL:

Там есть символ '^', инвертирующий строку, то есть все кроме этих символов будет резаться.

3.2.2001 02:18  falcon  []

Кое что в "обработке строки" все таки не предусмотренно...

А именно выход, если были введены одни пробелы.

После trim переменная станет равной нулю и mySQL в запросе это не понравится.

Ответ DL:

Посмотрите в - там это предусмотрено.

1.3.2001 18:21  Смоляное Чучелко  []

К вопросу о count(id): ежели так уж хочется поэкономить память, можно ведь написать mysql_result($result,0,1)

Ответ DL:

Кстати, экспериментальным путем установлено, что

$r = mysql_query("select id from ... where ...");

$num_rows = mysql_num_rows($r);

при большом количестве строк в результате выборки медленнее, чем

$r= mysql_query("select count(id) as num_rows from ... where ...");

$num_rows = mysql_fetch_row($r);

$num_rows = $num_rows[0];

(можно проверить, выполнив запросы через терминал).

<


Содержание  Назад  Вперед