国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

mysql - 如何在數(shù)據(jù)庫里優(yōu)化 漢明距離 查詢?

瀏覽:117日期:2022-06-21 10:52:44

問題描述

項(xiàng)目里需要一個(gè)搜索相似圖片的功能,百度了一些dhash的算法,生成了16個(gè)長度的hash值,在mysql里這樣查詢:

SELECT pk, hash, BIT_COUNT( CONV(hash, 16, 10) ^ CONV(’4c8e3366c275650f’, 16, 10) ) as hamming_distance FROM image_hashes HAVING hamming_distance < 4 ORDER BY hamming_distance ASC;

經(jīng)測試,15W條數(shù)據(jù),搜索需要很長時(shí)間。第二次速度會(huì)快些,有啥辦法可以優(yōu)化?

問題解答

回答1:

謝邀。

抱歉地說,這個(gè)我也沒有做過,只是之前聽說過漢明距離。15w數(shù)據(jù),不是很多,但是用了mysql的函數(shù),沒辦法創(chuàng)建索引。。。

大概搜了一下,有相同的問題。

可以參考mysql 圖片漢明距離計(jì)算, 近40w的異或計(jì)算, 如何破

Hamming distance on binary strings in SQL

你可以試試mysql的內(nèi)存表 MySQL內(nèi)存表的特性與使用介紹

回答2:

不好意思,沒有“漢明距離”的相關(guān)經(jīng)驗(yàn)。

如果只是15W數(shù)據(jù)的話,可以把數(shù)據(jù)加載到內(nèi)存里緩存起來,然后在程序里運(yùn)算,畢竟SQL并不擅長做這種事情。

僅從你的SQL來說,的確沒有太大的優(yōu)化空間,能想到的就只有以下幾點(diǎn):

hash列用char代替varchar

舍棄ORDER BY hamming_distance ASC,改為由程序排序

建議把DDL語句和EXPLAIN結(jié)果也發(fā)上來一并分析,不過最大的性能卡口應(yīng)該是BIT_COUNT(CONV(hash, 16, 10) ^ CONV(’4c8e3366c275650f’, 16, 10)) as hamming_distance,其實(shí)相當(dāng)于全表掃描了。

相關(guān)文章:
主站蜘蛛池模板: 欧美色视频日本片免费高清 | 国产在线黄 | 亚洲成人手机在线观看 | 免费国产黄网站在线观看视频 | 日本最色视频 | 手机免费在线看毛片 | 自拍视频在线 | 久久精品中文字幕一区 | 欧美骚视频| 精品视频免费在线 | 欧美a一级片 | 九九免费精品视频在这里 | 91香蕉视频成人 | 日韩成人在线视频 | 国产一级一国产一级毛片 | 精品国产成a人在线观看 | 免费99视频 | 免费人成黄页网站在线观看 | 岛国在线免费观看 | 99在线观看视频免费 | 亚洲色吧 | 国产综合在线播放 | 日本在线网 | 亚洲qingse中文久久网 | 日韩精品a | 国产精品久久久久久久人热 | 国产成人综合网在线观看 | 依人九九 | 国内自拍第100页 | 国产人成 | 男女男免费视频网站国产 | 中文字幕亚洲视频 | 亚洲成人在线免费观看 | 色悠久久久久综合网伊人男男 | www.99在线| 免费一级性片 | 欧美一级美片在线观看免费 | 国内精品亚洲 | 国产区精品 | 免费一级欧美大片视频在线 | 国产三级香港三韩国三级 |