我有很多URL必须保存在数据库中以便进行搜索和更新,哪种解决方案更适合性能:
在一个包含一列的表中将1-url url作为字符串,稍后从db获取字符串并将它们分解为数组并使用array_search
函数查找URL:
已存储的网址:http://site1.com|http://site2.com|....
搜索例程:
$is_unique= array_search("$url" ,explode($row['url'] , "|"));
2 - 在db表中为每个URL插入一行,并使用查询进行搜索和更新。
答案 0 :(得分:1)
让MySQL处理搜索。 MySQL可以利用索引,array_search也不行。请务必在您的网址列上声明一个索引。您可以使用以下SQL语句创建索引:
CREATE INDEX url_index ON your_table_name (url);
如果您批量更新您的网址,您可以将更新包装在一个事务中,这会使其更快,因为索引将在提交时重新生成,而不是在每个更新语句上重新生成。
START TRANSACTION;
[...your update statements go here...]
COMMIT;
编辑:关于安全性,因为我在您的一条评论中看到了它。如果参数是用户提供的,您希望使用mysql_real_escape_string()
转义输入:
mysql_query("SELECT * FROM table WHERE url = ('".mysql_real_escape_string($your_url)."'");
有关安全性的详细信息,请参阅the PHP manual about mysql_real_escape_string()和/或google about SQL injection