昨天我有一個question人們建議我用Levenshtein的方法。這是一個緩慢的查詢?也許我可以使用別的東西?Levenshtein在MySQL中很慢嗎?
1
A
回答
3
+1
LEVENSHTEIN不是一個集成的MySQL函數。它是用戶定義的功能。你需要用C編寫它。閱讀提供的鏈接到另一個相關的StackOverflow問題。 – 2010-08-09 13:40:32
0
如果你想要它的表現不錯,那麼規範你的模式。
問題是,爲了確定其他數據的相似程度,DBMS必須加載該數據並將其與數據進行比較。所以它必須讀取表格中的每一行(除了當前行)以找到「相似」值。它不能使用索引來查找接近數據的數據。
如果,另一方面,你用這樣的模式:
CREATE TABLE member (
member_id INT(11),
member_data CLOB,
PRIMARY KEY (member_id));
CREATE TABLE about_member (
member_id INT(11),
metric VARCHAR(10),
value MEDIUMINT(9),
PRIMARY KEY (member_id, metric),
KEY by_value (metric, value, member_id));
請注意,您about_member(1-1-2-2-1)字符串應該被實現爲單獨的行,例如
member_id metric value
1234 lost 2
1234 won 3
1234 drawn 1
1234 handicap 9
然後,您可以有效地使用索引,例如使用以下查詢。
SELECT compare.member_id, SUM(ABS(compare.value-datum.value)) AS difference
FROM about_member compare, about_member datum
WHERE datum.member_id=$MEMBER_TO_COMPARE
AND compare.member_id<>datum.member_id
AND compare.metric=datum.metric
AND compare.metric BETWEEN (datum.metric-1) AND (datum.metric+1) /* tweak here */
GROUP BY compare.member_id;
1
這取決於你的數據集。
我發現只有比較類似長度的字符串,我才能加速它的速度。
字符串長度的相似程度取決於您的數據。
有關於這個問題在這裏的文章:http://kerbtier.ch/2008/12/30/levenshtein-to-slow-how-to-speed-it-up
相關問題
- 1. BASH很慢嗎?
- 2. MySQL Levenshtein
- 3. MySQL的EXISTS()很慢
- 4. MYSQL插入很慢
- 5. MySQL查詢很慢
- 6. python mysql execute()很慢
- 7. 的MySQL COUNT很慢
- 8. MySql性能很慢
- 9. 遞歸在C++中真的很慢嗎?
- 10. 在unityscript中調用腳本很慢嗎?
- 11. MYSQL LIMIT LEVENSHTEIN
- 12. Mysql Optimized Levenshtein
- 13. fsockopen一般很慢嗎?
- 14. OpenAtrium真的很慢嗎?
- 15. Renderscript很慢,可以嗎?
- 16. 是ARCGIS 10很慢嗎?
- 17. GLPaint - 它真的很慢嗎?
- 18. 我的網站很慢嗎?
- 19. 教義真的很慢嗎?
- 20. 很慢執行MySQL查詢
- 21. MySQL的很慢查詢
- 22. MySQL的加入是很慢
- 23. Mysql子查詢很慢
- 24. MySQL的左連接很慢
- 25. mysql很慢怎麼辦?
- 26. 的MySQL與SUBQUERY很慢JOIN
- 27. MySQL查詢性能很慢
- 28. Mysql select *從哪裏primary_key在(1,2 ,, ...)很慢
- 29. MySQL「正在發送數據」很慢
- 30. mysql不存在,很慢 - 如何改進?
我想幫助,但問題是非常廣闊的。專注於特定的作品會讓討論和提供建議更容易。 – 2010-09-13 19:22:45
如果您有其他問題,請提出一個新問題。不要完全改變你現有的一個。 – Greg 2010-09-13 20:29:43
沒有關於它的規則,所以你不能編輯我的帖子。 – 2010-09-14 15:17:38