sql表中有100条记录,使用带键的哈希我能够成功处理所有记录并生成输出。可能有机会,sql表可能有数百万条记录。所有值都会存储在哈希。??如果没有使用哈希,还有其他方法可以处理所有记录。
my %summaryhash;
my $Attrdaysql = qq{select PACKAGEID, STATUS, sum(NUMDAYSACTIVE)
from table
group by PACKAGEID,STATUS};
# Compile the statement.
my $Attrdays_Query = $DB->prepare($Attrdaysql) or niceExit(1,$DB->errstr);
# Execute the statement.
$Attrdays_Query->execute() or niceExit(1,$DB->errstr);
while( my ( $packageId,$status,$attrdays) = $Attrdays_Query->fetchrow_array() )
{
my $sim;
$summaryhash{ SIM } = $sim;
$summaryhash{ $sim }{ $packageId }{ package_id } = $packageId;
if ($status eq "ACTIVE")
{
$summaryhash{ $sim }{ $packageId }{ activeDays } = $attrdays;
}
elsif ($status eq "SUSPEND")
{
$summaryhash{ $sim }{ $packageId }{ suspendDays } = $attrdays;
}
}
答案 0 :(得分:0)
将所有值存储在哈希值中吗?
是的,因为这个测试程序显示可以使用数百万个键的哈希值
time perl -e 'keys(%myhash)=13000000;for ('a'..'zzzzz') { $myhash{$_}++ }; print scalar keys %myhash;'