问题描述
||
今天,我遇到了一个问题,即今天大型集合的搜索效率,我已经尽力将其归结为最基本的情况。我觉得这种事情可能与我遗失的一些经典问题或基本概念有关,因此,指向该问题的指针将非常有用。
假设我有一个表定义,例如
CREATE TABLE foo(
id int,type bool,reference int,PRIMARY KEY(id),FOREIGN KEY(reference) REFERENCES foo(id),UNIQUE KEY(reference)
) Engine=InnoDB;
填充n行,其中n / 2被随机分配为type = 1。除了第一行具有reference = null之外,每一行都引用具有相同类型的另一行。
现在我们要打印所有类型为1的项目。我假设在某个时候,递归调用类似的东西会更快
function printFoo1($ref){
if($ref==null)
return;
$q = \'SELECT id,reference FROM foo WHERE id=\'.$ref;
$arr = mysql_fetch_array( mysql_query($q) );
echo $arr[0];
printFoo1($arr[1]);
}
相对于
function printFoo2($ref){
$q = \'SELECT id FROM foo WHERE type=1\';
$res = mysql_query($q);
while( $id = mysql_fetch_array($res) ){
echo $id[0];
}
}
这里的要点是函数1搜索\“ id \”,该索引已被索引,而函数2必须进行n / 2个比较,不会导致命中,但是多个查询的开销将明显大于单个SELECT。
我的假设正确吗?如果是这样,在功能1胜过功能2之前,我们需要多少数据集?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)