Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
228 views
in Technique[技术] by (71.8m points)

mysql - How to run a explain query when a binary field is in the where clause

I need to check the query plan for the following query on MySQL using EXPLAIN.

But the problem is the column in the where clause is binary(16). Its a guid.

explain select `title`,`ttext` 
FROM ptip inner join user on user.id = ptip.userId
where ptip.titlehash = <whatever value>

Here the titlehash is binary(16) and the query gives the following error:

'Impossible WHERE noticed after reading const tables'

I tried using; where ptip.titlehash = BINARY('24dwdfsdf') but still the same;

How do you run the above query ?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Ok here's how I finally solved it;

SET @hs = (SELECT titlehash FROM ptip WHERE id = 5673);
EXPLAIN SELECT `title`,`ttext` 
FROM ptip INNER JOIN USER ON user.id = ptip.userId
WHERE ptip.titlehash  = @hs

I put the value in the @hs variable and then use for explain. Fortunately the explain command explains the select only. It doesn't care about the SET operation and treat the @hs variable as just a value


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...