将MySQL表查询与序列化目标文件中的加载数据进行比较

时间:2011-10-20 07:21:25

标签: php mysql performance serialization

我有一个用PHP表示的表:

$Column1 = array();
$Column2 = array();
$Column3 = array();
$Table = array($Column1,$Column2,$Column3);

并序列化$ Table,然后将其保存为二进制文件:

file_put_contents("table.bin",serialize($Table));

毕竟,我需要的是比较这两种情况下从MySQL和序列化数据文件中加载数据的两种方法的性能:
(a)该表只有几行,通过HTTP向网站发出大量网页请求 (b)该表有很多行,还有很多通过HTTP的网站请求

第一种方法,从mysql表加载:

$Result = mysql_query("select * from Table where email='johndoe@example.com'");
$Count = mysql_num_rows();
$Filtered_Rows = array();
for ($Index=0; $Index<$Count; $Index++)
  $Rows[$Index] = mysql_fetch_assoc($Result);
var_dump($Filtered_Rows);

第二种方法,从序列化数据文件加载:

$Data = unserialize(file_get_contents("table.bin"));
$Count = count($Data);
$Filtered_Rows = array();
for ($Index=0; $Index<$Count; $Index++)
  if ($Data[$Index]["email"]=="johndoe@example.com")
    array_push($Filtered_Rows,$Data[$Index]);
var_dump($Filtered_Rows);

假设PHP有足够的内存将整个文件'table.bin'加载到memroy中,哪种方法应该在上述两种情况下提供更好的性能?
我认为第二种方法在尝试“反序列化”时有问题 一张非常大的桌子。

0 个答案:

没有答案