И опять вопросы по работе с mysql и php: 1) Есть два запроса: mysql_query('select * from `table` where `id`='.$id.' and `user_id`='.$_SESSION['id']); mysql_query('select * from `table` where `id`='.$id.' and `user_id`='.$_SESSION['id'].'limit 0, 1'); Первичный ключ - id. Имеет ли смысл писать limit 0, 1 в конце запроса или это не ускорит запрос? 2) В случае уже полученных данных: $ar = array(); $res = mysql_query('select * from `table` where `id`<30'); while($ar = mysql_fetch_assoc($res)){} Что лучше использовать: mysql_num_rows($res) или sizeof($ar) ? 3) Зачем нужен mysql_fetch_array, если есть mysql_fetch_assoc и mysql_fetch_row? По идее, эти две функции по отдельности работают быстрее? 4) При организации, допустим, блогов, разумно ли вынести посты блогов в отдельные файлы, а комментарии оставить в БД? Просто тогда получается, что при выводе последних блогов одновременно будет вестись работа как с БД, так и с файлами, что мне не нравится. Тем более, что анонс все равно придется писать в БД. 5) Определение глобальных переменных в функции - довольно медленная вещь. Можно ли ускорить работу функции, загнав ссылки на нужные переменные в массив и определив в функции глобальным только новый массив? То есть, было: function f() { global $ar1, $ar2, $ar3; } Стало: $all = array('ar1' => &$ar1, 'ar2' => &$ar2, 'ar3' => &$ar3); function f() { global $all; $ar1 = $all['ar1']; } Если целесообразность некоторых вопросов у вас вызвала недоумение, считайте, что я любитель экономить на спичках.
Ответ
1) Имеет смысл сделать так:
mysql_query('select * from `table` where `id`='.$_SESSION['id'].' limit 0,1');
Только исключите в запросах *, тогда будет экономия уже не на спичках :)
2) Согласен с @mozzart
3) mysql_fetch_array работает быстрее, чем assoc, т.к. добавляет только индексы в массив.
4) Согласен с @mozzart
5) Скорее вот так быстрее:
function (&$ar1, &$ar2, &$ar3) {
...
}
Пример:
class Api {
private $db;
public function test() { // Этой функции Вы собирались передать get и post
$this->db; // объект бд
}
}
или так:
class Api extends DB {
public function test() {
$this->query();
}
}
class DB {
public function query() {
...
}
}
Комментариев нет:
Отправить комментарий