1

我有一个应用程序,其中性能是非常关键的问题。该应用程序有 50.000 名用户进行大量搜索。目前我将国家代码作为 char(2) 存储在 users 表中,然后我从国家 php 数组中检索国家。

$countries = array("AF"=>"Afghanistan","AL"=>"Albania",...)

我对大约 6 个属性进行了类似操作,并且所有属性都具有相似数量的值。这很有帮助,因为不需要加入。

只谈性能,将国家名称和其他属性继续存储在数组中,或者将每个属性与另一个存储每个代码名称的表连接起来会更快吗?

4

4 回答 4

2

这实际上取决于您的性能瓶颈在哪里。如果您的数据库中有漂亮的表和适当的索引,那么您的数据库将快速返回数据。如果是您的数据库被破坏,那可能会产生不好的影响。

另一方面,如果您的服务器在 CPU 周期上非常繁重并且不断地达到最大值,则让数据库处理连接。要考虑的另一件事是内存使用-带有国家/地区代码的数组不是什么大问题,但是其中包含产品列表的数组可能会占用一些内存-如果您有很多并发用户,那对性能来说可能不是一件好事。

于 2012-07-17T08:17:20.120 回答
0

将它们保留在数组中并避免连接绝对是最好的性能。

于 2012-07-17T08:17:03.557 回答
0

数组更快,但大数据集消耗更多内存,这在你的情况下是不正确的;)

于 2012-07-17T08:18:38.953 回答
0

这是另一种选择,完全取决于您的情况和您提到的其他 6 个值,如果该数据与国家列表一样静态,则考虑将数据缓存在文件中。

if( some simple validation is true ){
include "EN.php" ;
}
echo $country;

并从那里访问您的变量。如果您打开了某种内存缓存(例如 APC),那就更好了。

于 2012-07-17T08:23:06.670 回答