哪个效率更高,效率是多少?
类型1:
insert into table_name(column1,column2..) select column1,column2 ... from another_table where
columnX in (value_list)
类型2:
insert into table_name(column1,column2..) values (column1_0,column2_0..),(column1_1,column2_1..)
第一版看起来很短,第二版看起来非常长,当value_list包含500个甚至更多的值时。
但我不知道哪个人的表现会更好,但感觉第一个应该更直接地效率。
答案 0 :(得分:2)
第一个更干净,特别是如果你的列已经在mysql中(我假设你说的是?)。您可以在网络开销中节省一些时间来发送数据和解析时间,并且不必担心会遇到客户端的任何查询大小限制。
但是,一般来说,我希望性能与行数越大越相似,特别是在索引良好的表上。大多数时候对于大型查询的插入都花费在构建索引(参见here)这样的事情上,并且如果没有关闭索引,这两个查询都必须这样做。
答案 1 :(得分:0)
我同意Todd的观点,第一个查询更清晰,发送到MySQL服务器的速度更快,编译速度更快。而且,随着插入记录数量的增加,速度差异将会下降。
但第一种形式还有其他好处需要考虑: