我有以下查询:
SELECT image_hashid_pk,dcthd,mhhd FROM (
SELECT image_hashid_pk,
BIT_COUNT(BINARY '1010000110010011000111001100000011110001011110001111111110000101' ^ BINARY dct_binary) AS dcthd,
BIT_COUNT(BINARY '011010011011000111001000111111000011010000111010000101101111000101011001111110110000110010010100101100110101001111011000000011100101110010110100110010110111100100111011000000011011111110000011011001011000011010000011010010010101100101110101101010001001101010000011011101010110101101011011001001001101000011111000010100101001010010000101101000001011101010001111000011110010010010011010011001100100100010011110110100110110100100101101000001110000110011010010111110000111101101111000111111010110111001100110111000000111000000111000000111000010111000000111000000111000000111000000' ^ BINARY mh_binary)/576 AS mhhd
FROM image_hashtest
)AS t
WHERE dcthd=0 OR mhhd<=0.05
ORDER BY mhhd,image_hashid_pk ASC;
我也像下面这样写
SELECT image_hashid_pk,
BIT_COUNT(BINARY '1010000110010011000111001100000011110001011110001111111110000101' ^ BINARY dct_binary) AS dcthd,
BIT_COUNT(BINARY '011010011011000111001000111111000011010000111010000101101111000101011001111110110000110010010100101100110101001111011000000011100101110010110100110010110111100100111011000000011011111110000011011001011000011010000011010010010101100101110101101010001001101010000011011101010110101101011011001001001101000011111000010100101001010010000101101000001011101010001111000011110010010010011010011001100100100010011110110100110110100100101101000001110000110011010010111110000111101101111000111111010110111001100110111000000111000000111000000111000010111000000111000000111000000111000000' ^ BINARY mh_binary)/576 AS mhhd
FROM image_hashtest HAVING dcthd=0 OR mhhd<=0.05
ORDER BY mhhd,image_hashid_pk ASC LIMIT 1;
在上面没有排序的查询中,它花费的时间更少,但是当我在“mhhd”列上使用 order by 子句时,它花费了太多时间。
我可以在 mhhd 上创建索引还是用其他方法来优化上述查询,请提出建议。