【发布时间】:2015-05-27 03:42:27
【问题描述】:
100,000 条记录的表格内容
CON_ID | CON_VALUE | CON_CATEGORY __________________________________ 001 |数据1 |标题 002 |数据2 |标题 003 |数据3 |过程 004 |数据4 |过程我从数据库中读取数据表content 并复制到数组。因为我必须从content 中选择100 次。
array(100017) {
[0]=>
array(3) {
["CON_VALUE"]=>
string(40) "data1"
["CON_ID"]=>
string(32) "001"
["CON_CATEGORY"]=>
string(9) "title"
}
[1]=>
array(3) {
["CON_VALUE"]=>
string(26) "data2"
["CON_ID"]=>
string(32) "002"
["CON_CATEGORY"]=>
string(9) "title"
}
[2]=>
array(3) {
["CON_VALUE"]=>
string(28) "data3"
["CON_ID"]=>
string(32) "003"
["CON_CATEGORY"]=>
string(9) "process"
}
[3]=>
array(3) {
["CON_VALUE"]=>
string(26) "data4"
["CON_ID"]=>
string(32) "004"
["CON_CATEGORY"]=>
string(9) "process"
}
}
例如:
我要select CON_VALUE from Content where CON_ID=001 and CON_CATEGORY='title'
我使用 foreach
foreach($GLOBALS['contentTable'] as $R)
{
if($R['CON_ID']==$id && $R['CON_VALUE']!='' && $R['CON_CATEGORY']=='PRO_TITLE' )
{
return $R["CON_VALUE"];
}
}
但是这个 foreach 很慢(大约 10 秒)
问题:如何提高搜索速度?还是有更好的方法来获取基于值的值数组?
【问题讨论】:
-
为什么不能使用给定的 select 语句只从数据库中选择您需要的数据而不是全部 100000 行?
-
我必须从表中选择大约 100 次
-
好的,创建条件数组并使用 IN 语句。 100K 行只会占用大量 RAM 和 CPU 时间来运行。