Mysql 连接和in性能_mysql – SQL性能:哪个更快? IN()与JOIN

这是一个我从来没有得到明确答案的问题.我在这个例子中使用

MySQL.

给定一组相当大的值(比方说500).使用IN()子句使用这些值搜索表是否更快:

SELECT * FROM table WHERE field IN(values)

或者通过在内存中创建临时表,使用值填充它并将其连接到正在搜索的表:

CREATE TEMPORARY TABLE `temp_table` (`field` varchar(255) NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=latin1;

INSERT INTO temp_table VALUES (values)

SELECT * FROM table t1 JOIN temp_table t2 ON t1.field = t2.field

两种方法都会产生相同的结果集.

我已经完成了一些自己的基本基准测试,发现当处理超过500个值时,使用临时表比使用IN()子句更快.

有人可以向我解释MySQL的内部工作原理以及这个问题的正确答案是什么?

谢谢,

狮子座

你可能感兴趣的:(Mysql,连接和in性能)