通过Mysql查询进行文本处理

时间:2012-02-06 09:37:20

标签: php database arrays string performance

我有很多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插入一行,并使用查询进行搜索和更新。

1 个答案:

答案 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