SqLite: легче не бывает! Никита Кислицин Xakep, номер #069, стр. 069-126-4 Получать результаты запросов можно и другим способом: Получение результата запроса <?php $db = new sqlite_db("lite.db"); $res = $db-> unbuffered_query("SELECT * FROM blah"); foreach ($res as $r) { echo "$r[0] $r[1]\n"; } ?> В принципе, такой метод абсолютно аналогичен классическому. Принципиальных отличий нет, однако, в рассматриваемом случае значительно повышена производительность. За счет чего? Давай подумаем. Очевидно, что любой прирост производительности достигается лишь тогда, когда обрабатывается меньшее количество информации. В данном случае ты как программист лишаешься инструмента - внутри цикла у тебя нет доступа к ключам, поскольку данные не прохэшированы в памяти. Такая схема получения информации сильно экономит ресурсы и работает значительно быстрее, чем sqlite_fetch_*(), поэтому я советую тебе ее использовать. Также расширение SqLite предоставляет чрезвычайно интересную возможность создания своих собственных функций, используемых в пределах sql-запроса. Довольно странно, не так ли? Как это стало возможным? Напомню тебе, что SqLite в одной-единственной библиотеке, из которой парсер PHP импортирует некоторые функции, содержит как интерфейс, так и сам движок БД. За счет этого достигается возможность расширения стандартного API. Для этого даже есть специальная функция sqlite_create_function(), при помощи которой можно легко создавать собственные процедуры, которые в дальнейшем будут использованы внутри какого-то sql-запроса. Давай рассмотрим простейший пример: Создаем собственную sql-функцию <? function user_f($dbstr, $str) { return $dbstr."-".$str; } $db = new sqlite_db("lite.db"); $db-> create_function('user_f', 'user_f', 2); $r = $db-> array_query("SELECT name, user_f(name, 'пацан!') FROM blah", SQLITE_ASSOC); print_r($r); ?> Здесь мы описали элементарную, маразматичную по сути функцию user_f, которую использовали при выполнении запроса. Эта возможность, несмотря на нелепость примера, позволяет заметно упростить даже такой элементарный скрипт. Кстати, при таком подходе можно использовать сам парсер PHP в качестве движка шаблонов. Он будет вставлять в HTML-код данные из таблицы, что вообще может свести на нет необходимость использования дополнительного движка шаблонов. Само собой, это еще и довольно производительное решение: в пользовательском пространстве не совершается никаких действий с данными. Results Приятель, мы только что разобрались с новым инструментом, поздравляю! Ты уже понял, что SqLite – офигительно функциональное решение и эта БД может легко поспорить с mySQL, по крайней мере, для использования в небольших некоммерческих проектах. В любом случае, этот продукт достоин самого пристального внимания со стороны любого web-разработчика. Разумеется, как и любой инструмент, SqLite имеет свои сильные и слабые стороны. Для небольших систем, рассчитанных, прежде всего, на получение данных из таблиц, это своего рода панацея от всех бед, идеальное решение. Удачи в экспериментах! |