成人视屏在线观看-国产99精品-国产精品1区2区-欧美一级在线观看-国产一区二区日韩-色九九九

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

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

瀏覽:150日期: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;

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

問題解答

回答1:

謝邀。

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

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

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

Hamming distance on binary strings in SQL

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

回答2:

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

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

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

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,其實相當(dāng)于全表掃描了。

相關(guān)文章:
主站蜘蛛池模板: 国产精品久久久久久久久福利 | 92av在线| 日本国产最新一区二区三区 | 国产精品亚洲欧美日韩区 | 色久视频 | 久久久久久久久久久视频国内精品视频 | 国产成人免费网站在线观看 | 日韩久久精品 | 亚洲最新网址 | 99久久精品国产一区二区成人 | 美女张开双腿让男人桶 | 久久成人免费播放网站 | 成人永久免费视频网站在线观看 | 国产精品一区二区在线观看 | 日韩a一级欧美一级在线播放 | 成人亚洲视频在线观看 | 日韩欧美一中字暮 | 欧美大片毛片aaa免费看 | 高清不卡一区二区三区 | 亚洲免费人成在线视频观看 | 精品视频 九九九 | 欧美精品一区二区在线观看 | 久久精品99精品免费观看 | 成年美女黄网站色大 | 日本高清一本二本三本如色坊 | 久草视频在 | 午夜成年女人毛片免费观看 | 亚州中文| 狠狠色丁香婷婷综合小时婷婷 | 青草欧美 | 国产欧美在线观看视频 | 理论片中文字幕 | 国产精品露脸脏话对白 | 波多野结衣在线免费观看视频 | 99久免费精品视频在线观看2 | 国产高清在线看免费视频观 | 最近免费手机中文字幕3 | 私人玩物福利 | 亚洲欧美日韩精品久久亚洲区色播 | 国产成人精品免费视频大全办公室 | 日本欧美亚洲 |