【发布时间】:2015-01-24 15:28:53
【问题描述】:
我目前正在执行从我的数据库中提取字符串的查询。但它必须检查我导入的每一个新行。一个 100k 的文件需要将近 4 个小时才能导入。那太长了。我假设我的 sql 代码检查他是否存在是减慢它的事情。 我听说过索引,但我不知道它是什么或如何使用它。
这是我当前使用的代码:
$sql2 = $pdo->prepare('SELECT * FROM prospects WHERE :ssn = ssn');
$sql2->execute(array(':ssn' => $ssn));
if($sql2->fetch(PDO::FETCH_NUM) > 0){
所以每次 phpscript 读取一个新行时,它都会进行此项检查。问题是,我不能把它放在 sql 代码中的“重复键上”。它必须在去任何 sql 之前检查,因为如果这是空的,那么它应该继续做它的事情。
我能做些什么来提高时间效率?而且,如果索引是要走的路,有人可以通过发布示例、链接指南或 php.net 页面来启发我如何做到这一点。以及我如何从该索引中读取以执行我在代码中的操作
【问题讨论】:
-
那么也许阅读一些关于indexes 的文章会是一个不错的起点
-
索引表与 PHP 无关。
ssn是主键还是外键? -
SQL 基于“集合”或行集合,大多数效率都集中在这个用例上。将数据转储到数据库端的临时表中并立即对所有内容运行查询可能会总体上产生更好的结果。