日期:2010-12-20 浏览次数:20387 次
对查询进行缓存
上个月,我们简单地了解了ADOdb中,如何进行SELECT、INSERT和UPDATE的操作。如果你在ADOdb上是个新手,我建议先读一下那篇文章。 ADOdb 还有很多更高级的特征,这个月,我们就一起来关注其中的部分内容。
数据库时常会成为应用程序效率低下的祸首。尽量减少对数据库的查询,是提高执行效率的方法之一。这,通常可以通过对整页内容进行缓存(有很多种方法来实现。比如,PEAR->Cache),或者,如果你需要做一张动态页面,并且只想让查询指令被缓存,那么,你可以使用ADOdb,简单地将查询指令缓存起来。在你视图通过缓存来提高你的应用程序的糟糕性能之前,我建议你先试图去优化你的查询指令。有时候,一些简单的索引可以改变一切——有太多的所谓的专业的解决方案,都在使用糟糕的索引。在本文中,你能找到很多这样的实例。现在,让我们来看看ADOdb是如何使你能够对数据库的查询结果进行缓存的。在这个实例中,ADOdb把我们的最后的一次查询的结果保存在/var/tmp/adodb_cache这个缓存文件中,并保留10分钟。
include("$adodb_path/db_values.inc.php"); include("$adodb_path/adodb.inc.php"); $db = NewADOConnection('$database_type'); $db->Connect("$host", "$user", "$password", "employees"); $ADODB_CACHE_DIR = "/var/tmp/adodb_cache"; //Directory to store cached files $sql = "SELECT surname, age FROM employees"; $rs = &$db->CacheExecute(600,$sql); // Executes, and caches the results for 600 seconds if (!$rs) { print $db->ErrorMsg(); // Displays the error message if no results could be returned } else { while (!$rs->EOF) { print $rs->fields[0].' '.$rs->fields[1].'<BR>'; // fields[0] is surname, fields[1] is age $rs->MoveNext(); // Moves to the next row } // end while } // end else |
$sql = "SELECT surname, age FROM employees"; $rs = &$db->CacheExecute(600,$sql); // Executes, and caches the results for 600 seconds print $rs->RecordCount() . " rows returned]"; // Display number of rows returned |
$sql = "SELECT surname, age FROM employees"; $rs = &$db->CacheExecute(600,$sql); // Executes, and caches the results for 600 seconds print $rs->FieldCount() . " columns returned]"; // Display number of rows returned |
$sql = "SELECT surname, age FROM employees"; $rs = &$db->SelectLimit($sql, 10, 100); // Select 10 rows, starting at row 100 if (!$rs) { print $db->ErrorMsg(); // Displays the error message if no results could be returned } else { while (!$rs->EOF) { print $rs->fields[0].' '.$rs->fields[1].'<BR>'; // f
免责声明: 本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
|