PHP+mySQL:读取65K行挂起mySQL
我正在开发一个用于处理IP地址的php应用程序。因此,我正在处理包含多达40亿行的mysql表 我有一个脚本,当前需要从这个表中获取65536个地址,当我试图提取这些65K行时,mysql查询无法通过PHP甚至phpMyAdmin给出响应 包含IP地址的表有3个索引,1个是唯一的,2个是主要的,这有助于它运行得更快,但我无法通过让mysql给PHP一个关联数组来继续我的数据处理 关于如何避免这个问题,有什么建议吗 提前谢谢PHP+mySQL:读取65K行挂起mySQL,php,mysql,ip,large-data,Php,Mysql,Ip,Large Data,我正在开发一个用于处理IP地址的php应用程序。因此,我正在处理包含多达40亿行的mysql表 我有一个脚本,当前需要从这个表中获取65536个地址,当我试图提取这些65K行时,mysql查询无法通过PHP甚至phpMyAdmin给出响应 包含IP地址的表有3个索引,1个是唯一的,2个是主要的,这有助于它运行得更快,但我无法通过让mysql给PHP一个关联数组来继续我的数据处理 关于如何避免这个问题,有什么建议吗 提前谢谢 $request = new Request(DB_N
$request = new Request(DB_NAME);
$request->select = '*';
$request->from = Etherwan_Adressage_Ip::TABLE_NAME;
$request->where = Etherwan_Adressage_Ip_Ressource::PRIMARY_KEY." = '".$options->Ressource_ID."'";
$request->order = " inet_aton(IP) ";
$Compteur = 0;
$Liste = array();
$result = $request->exec('select');
for ($i=0 ; $i<$result['length'] ; $i+=$CIDR->Adresses_Totales){
$Possible = TRUE;
$Selected = FALSE;
for ($j=$i ; $j<$i+$CIDR->Adresses_Totales ; $j++){
if ($result[$j]['Date_Affectation'] != '0000-00-00 00:00:00'){
if (isset($options->Include)){
if ($options->Include->Type != $result[$j]['Type_Liaison'] || $options->Include->Liaison_ID != $result[$j]['Liaison_ID'] || str_replace('/', '', $options->CIDR) != $result[$j]['Bits']){
$Possible = FALSE;
} else {
$Selected = TRUE;
}
} else {
$Possible = FALSE;
}
break;
}
}
if ($Possible){
$Liste[$Compteur]['text'] = $result[$i]['IP'] . " / " . $result[$i+$CIDR->Adresses_Totales-1]['IP'];
$Liste[$Compteur]['value'] = $result[$i]['Ressource_ID'];
$Liste[$Compteur]['selected'] = $Selected;
$Liste_IP = array();
for ($j=$i ; $j<$i+$CIDR->Adresses_Totales ; $j++){
if ($result[$j]['Nom'] != ''){
$result[$j]['Dispo'] = 0;
} else {
$result[$j]['Dispo'] = 1;
}
$Liste_IP[] = $result[$j];
}
$Liste[$Compteur]['Liste_IP'] = $Liste_IP;
$Compteur++;
}
}
$Liste['maxLength'] = $Liste['length'] = $Compteur;
return $Liste;
您是否尝试对查询使用“限制”和“偏移量”对大型结果集进行细分,并每次使用一个小的子集重新进行处理?您期望得到什么样的响应?您的PHP脚本实际应该显示65536个IP地址吗?您可以显示您的查询吗?我必须能够访问完整的65K行,因为在获得它们之后,我必须根据用户选择的CIDR编号创建IP范围。因此,我必须检查每一行,看看IP是否可用,并根据它来构造我的范围。但是你能告诉我们你正在执行的查询吗?