午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

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

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

瀏覽:255日期: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)測(cè)試,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)文章:
主站蜘蛛池模板: 久久五月综合 | 亚洲在线视频一区二区 | 激情网站视频 | 东方伊人免费在线观看 | 亚洲精品欧美精品 | 久久精品国产成人av | 免费a视频在线观看 | 黄色av网址在线观看 | 欧洲国产精品 | 五月激情网站 | 成人午夜毛片 | 四虎在线免费视频 | av网站免费在线播放 | 日韩免费在线观看视频 | 欧美日韩在线视频免费 | 性高潮视频在线观看 | 国产精品久久久久一区二区三区 | 人人搞人人干 | 亚洲自拍三区 | 国产高清一区 | a级在线免费观看 | 永久免费看mv网站入口 | 久久黄色网址 | 好吊色在线视频 | 亚洲在线视频播放 | 欧美视频在线观看免费 | 精品一区二区在线视频 | 日本黄色大片网站 | 亚洲天堂网在线观看 | 色天堂视频| 亚洲www在线 | 撕开她情趣内裤让她呻吟视频 | 天堂中文在线网 | av大全在线观看 | www.亚洲黄色| 成年人在线观看网站 | 日韩久久久久 | 国产视频97| 日韩中文字幕不卡 | 日韩一级片在线观看 | 欧美成人精品欧美一级乱黄 |