为什么执行的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
。但仍然没有好的结果,查询时间还很长
请帮我这个
答
那么,在飞行中的转换需要时间和(我认为)没有指标可以使用。
最好的办法是,您的表格已设置为排序规则设置为二进制,至少对于您想要比较的列。
下面是一个例子它是如何工作的:
的样本数据:
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 |
- 看到它在sqlfiddle
带电作业,为什么我的问题得到了下来票,请告诉我,如果我错了 – Ryo