色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

mysql - 如何在數據庫里優化 漢明距離 查詢?

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

問題描述

項目里需要一個搜索相似圖片的功能,百度了一些dhash的算法,生成了16個長度的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;

經測試,15W條數據,搜索需要很長時間。第二次速度會快些,有啥辦法可以優化?

問題解答

回答1:

謝邀。

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

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

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

Hamming distance on binary strings in SQL

你可以試試mysql的內存表 MySQL內存表的特性與使用介紹

回答2:

不好意思,沒有“漢明距離”的相關經驗。

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

僅從你的SQL來說,的確沒有太大的優化空間,能想到的就只有以下幾點:

hash列用char代替varchar

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

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

相關文章:
主站蜘蛛池模板: 99精品视频在线播放2 | 91免费永久在线地址 | 日韩欧美在线一级一中文字暮 | 久久精品精品 | 国产一区二区三区免费观看 | 中文字幕国产专区 | 深爱激情五月网 | 日韩欧美一级毛片在线 | 真实一级一级一片免费视频 | 91久久99热青草国产 | 国产综合久久久久影院 | 日本人成免费大片 | 99精品一区二区免费视频 | 久久精品青草社区 | 欧美久久久久久久久 | 午夜亚洲精品 | 国产成人精品视频免费大全 | 97青青草原国产免费观看 | 欧美成人在线免费观看 | 日韩视频精品在线 | 欧美在线亚洲 | 久久99精品久久久久久久野外 | 精品九九久久国内精品 | 日韩丝袜美腿 | 亚洲三级精品 | 女人夜色黄网在线观看 | 亚洲免费网站观看视频 | 在线中文字幕日韩 | 免费在线观看一级毛片 | 久热精品男人的天堂在线视频 | 欧美亚洲国产激情一区二区 | 中文字幕有码在线播放 | 日本爽快片100色毛片 | 久久小视频 | 成年人免费网站在线观看 | 国产younv真实 | 自拍偷自拍亚洲精品10p | 美女张开腿男人桶 | 一级毛片牲交大片 | 久久影院国产 | 99爱在线精品视频免费观看9 |