在PHP中,使用include('somefile.php')或者使用简单的SELECT查询查询MySQL数据库来获取相同的信息,这样更快吗?
例如,假设您有一个JavaScript自动完成搜索字段,该字段需要3000个条件来匹配。使用include从另一个文件读取这些术语是更快,还是使用简单的SELECT查询从MySQL数据库中读取它们?
编辑:--这是假设我想要包含的数据库和文件与我的代码位于同一台本地机器上。
发布于 2008-10-03 10:19:13
那得看情况。如果您的文件在本地存储在您的服务器中,并且数据库安装在另一台计算机中,那么包含该文件的速度就更快了。
Buuuuut,因为它取决于您的系统,它可能不是真的。我建议您制作一个PHP测试脚本,并从命令行运行100次,并通过HTTP (使用cURL)重复测试。
示例:
use_include.php
<?php
start = microtime(true);
include( 'somefile.php' );
echo microtime(true)-start;
?>use_myphp.php
<?php
start = microtime(true);
__put_here_your_mysql_statements_to_retrieve_the_file__
echo microtime(true)-start;
?>发布于 2008-10-03 11:01:24
包括一个文件几乎总是更快。如果您的数据库位于另一台计算机上(例如,在共享主机中),或者在多服务器设置中,则查找必须进行额外的跳转。
然而,在实践中,这种差异可能并不重要。如果列表是动态的,那么将其存储在MySQL中将使您的生活更加轻松。静态列表(例如国家或州)可以存储在PHP包含中。如果列表很短(几百个条目),并且经常使用,您可以直接将其加载到JavaScript中,然后删除AJAX。
如果您正在使用MySQL路由,并且担心速度问题,那么请使用缓存。
$query = $_GET['query'];
$key = 'query' . $query;
if (!$results = apc_fetch($key))
{
$statement = $db->prepare("SELECT name FROM list WHERE name LIKE :query");
$statement->bindValue(':query', "$query%");
$statement->execute();
$results = $statement->fetchAll();
apc_store($key, $results);
}
echo json_encode($results);发布于 2008-10-03 10:42:49
时间上的差异更多地归结于系统设计,而不是我敢说的底层技术。MySQL结果和文件都可以缓存在内存中,而且性能差异很小,因此是可以忽略的。
相反,我会问自己,在维护方面有什么不同。你有可能改变数据吗?如果没有,就把它放进一个普通的文件中。您是否可能经常更改内容的一些内容?如果是这样的话,数据库操作起来就容易多了。同样的数据结构,如果它需要“重组”,也许把它放在数据库中更有效?
所以:做你觉得最方便的事情,对你和未来的代码和数据维护者来说是最方便的。:-)
https://stackoverflow.com/questions/166134
复制相似问题