2012-03-15 20 views
3

我有一個MySQL數據庫表與人名與成千上萬的行。MySQL:獲取所有行以進行搜索?

我正在編碼此表的搜索腳本以顯示存儲在表中最類似的名稱。

所以我想獲取表的所有行,然後使用一個FOREACH循環,它將調用similar_text()(一個返回百分比數的函數),然後在表上顯示只匹配60%相似。

如果這樣做(提取所有行),我的網站性能會減慢太多嗎? 我的服務器帶寬會因此而受損嗎?

PS:「聽起來像是」 MySQL命令沒有太大的幫助在這種情況下

+0

什麼是similar_text嗎?你可以發佈代碼,以便我們可以看到它是否可以轉移到數據庫進行處理? – iWantSimpleLife 2012-03-16 01:12:16

+0

http://php.net/similar_text – user1091856 2012-03-16 01:16:16

回答

1

是的,這將你的網站最有可能放緩,尤其是在你的網站的增長,你有許多用戶同時搜索。

如果可能,請使用存儲過程或用戶定義的函數在數據庫中進行搜索。此外,即使您不知道要查找的條目的確切拼寫,如果您知道第一個字母,則可以加快搜索速度。您可以使用類似WHERE name LIKE 'F%' AND similar_text(name, 'FOOBAR') > 0.6之類的內容,因爲可以使用索引僅查找以F開頭的那些行。

+0

您是否在MySQL語句中使用了similar_text()? – user1091856 2012-03-15 23:09:22

相關問題