我有一個MySQL數據庫表與人名與成千上萬的行。MySQL:獲取所有行以進行搜索?
我正在編碼此表的搜索腳本以顯示存儲在表中最類似的名稱。
所以我想獲取表的所有行,然後使用一個FOREACH循環,它將調用similar_text()(一個返回百分比數的函數),然後在表上顯示只匹配60%相似。
如果這樣做(提取所有行),我的網站性能會減慢太多嗎? 我的服務器帶寬會因此而受損嗎?
PS:「聽起來像是」 MySQL命令沒有太大的幫助在這種情況下
我有一個MySQL數據庫表與人名與成千上萬的行。MySQL:獲取所有行以進行搜索?
我正在編碼此表的搜索腳本以顯示存儲在表中最類似的名稱。
所以我想獲取表的所有行,然後使用一個FOREACH循環,它將調用similar_text()(一個返回百分比數的函數),然後在表上顯示只匹配60%相似。
如果這樣做(提取所有行),我的網站性能會減慢太多嗎? 我的服務器帶寬會因此而受損嗎?
PS:「聽起來像是」 MySQL命令沒有太大的幫助在這種情況下
是的,這將你的網站最有可能放緩,尤其是在你的網站的增長,你有許多用戶同時搜索。
如果可能,請使用存儲過程或用戶定義的函數在數據庫中進行搜索。此外,即使您不知道要查找的條目的確切拼寫,如果您知道第一個字母,則可以加快搜索速度。您可以使用類似WHERE name LIKE 'F%' AND similar_text(name, 'FOOBAR') > 0.6
之類的內容,因爲可以使用索引僅查找以F開頭的那些行。
您是否在MySQL語句中使用了similar_text()? – user1091856 2012-03-15 23:09:22
讓數據庫執行搜索。
看到這個問題,看起來你需要的東西:How to find similar results and sort by similarity?
什麼是similar_text嗎?你可以發佈代碼,以便我們可以看到它是否可以轉移到數據庫進行處理? – iWantSimpleLife 2012-03-16 01:12:16
http://php.net/similar_text – user1091856 2012-03-16 01:16:16