亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

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

瀏覽:84日期: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,其實相當于全表掃描了。

相關文章:
主站蜘蛛池模板: 2020久久精品国产免费 | 鲁大师在线观看免费播放 | 青青青国产精品国产精品久久久久 | 国内精品视频在线播放一区 | 成年人视频黄色 | 日韩欧美国产偷亚洲清高 | 本道久久综合88全国最大色 | 三级理论中文字幕在线播放 | 黄色aaa级片 | 黄色在线观看网址 | 久久免费国产 | 精品视频网 | 麻豆 一区 精品 在线 | 久久777国产线看是看精品 | 成人一区二区免费中文字幕 | 国产在线观看不卡 | 精品国产成人三级在线观看 | 欧美国产亚洲一区 | 亚洲人成一区二区不卡 | 亚洲成人中文 | 国产美女亚洲精品久久久久久 | 在线观看视频一区二区三区 | 精品久久一区二区 | 国产主播一区二区 | 5月婷婷6月丁香 | 国产91精品在线播放 | 我要看黄色一级片 | 国内精品久久久久久影院老狼 | 欧美人成片免费看视频不卡 | 国产另类视频 | 欧美色频 | 六月丁香婷婷色狠狠久久 | 色婷婷激婷婷深爱五月老司机 | 达达兔午夜一级毛片 | 亚洲狠狠狠一区二区三区 | 成年黄色网 | 色在线国产 | 97久久天天综合色天天综合色hd | 国产永久免费视频m3u8 | 国产精品99久久久久久www | sese日本|