2012-02-06 63 views
2

我有很多必須用於搜索和更新,其解決方案是更好的性能被保存在數據庫URL中的:文本等待處理

1店網址中包含一列的表字符串,在後來從數據庫獲取字符串,並將其爆炸到一個數組中,並使用array_search功能找到一個網址:

存儲網址:http://site1.com|http://site2.com|....

搜索程序:

$is_unique= array_search("$url" ,explode($row['url'] , "|")); 

爲db表中的每個URL每插入一行,並使用查詢進行搜索和更新。

+4

我會使用一個新行每個,其清潔讀取和輸出所需的代碼較少。 – 2012-02-06 09:38:55

+0

我也喜歡它,但爲什麼文本處理不呢? – bizzr3 2012-02-06 09:41:57

+1

你會做什麼樣的搜索查詢?但通常你應該爲每個網址記錄1條記錄。 – Vyktor 2012-02-06 13:40:59

回答

1

讓MySQL處理搜索。 MySQL可以利用索引,array_search不能。只要確保在你的url列上聲明一個索引即可。你可以用下面的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