perl中哈希的替代方法

时间:2014-10-16 11:42:43

标签: perl

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;   
    }
}

1 个答案:

答案 0 :(得分:0)

  

将所有值存储在哈希值中吗?

是的,因为这个测试程序显示可以使用数百万个键的哈希值

time perl -e 'keys(%myhash)=13000000;for ('a'..'zzzzz') { $myhash{$_}++ }; print scalar keys %myhash;'