为什么执行的JOIN化妆查询这么慢区分大小写的比较

问题描述:

我有下面的查询,我想执行的JOIN比较条件区分大小写:为什么执行的JOIN化妆查询这么慢区分大小写的比较

SELECT kousei.kousei_hin_id,shohin.shohin_id, hf.KOSCASSU, hf.MSTLINNO 
FROM sc.HINMTF hf 
LEFT OUTER JOIN m_kousei_hin kousei ON BINARY hf.HINCD = kousei.kousei_hin_code 
LEFT OUTER JOIN m_shohin shohin ON BINARY hf.KOSHINCD = shohin.shohin_code ; 

如果我不使用BINARY,查询时间短,但BINARY非常非常慢

我尝试另一种方式,如collate。但仍然没有好的结果,查询时间还很长

请帮我这个

+0

带电作业,为什么我的问题得到了下来票,请告诉我,如果我错了 – Ryo

那么,在飞行中的转换需要时间和(我认为)没有指标可以使用。

最好的办法是,您的表格已设置为排序规则设置为二进制,至少对于您想要比较的列。

下面是一个例子它是如何工作的:

的样本数据:

CREATE TABLE a 
    (`a` varchar(1) COLLATE utf8_bin) 
; 

INSERT INTO a 
    (`a`) 
VALUES 
    ('a'), ('B') 
; 

CREATE TABLE b 
    (`b` varchar(1) COLLATE utf8_bin) 
; 

INSERT INTO b 
    (`b`) 
VALUES 
    ('A'), ('B') 
; 

查询:

select a, b from a join b on a.a = b.b; 

结果:

| a | b | 
|---|---| 
| B | B |