gpt4 book ai didi

mysql - NOT IN 比 MySQL 中的不等式快吗?

转载 作者:行者123 更新时间:2023-11-29 00:16:38 24 4
gpt4 key购买 nike

我正在尝试找出是否有更有效的方法来为 MySQL 5.5 编写我的存储过程。本质上,存储过程将从我创建的所有表中截断数据,除了少数几个。我尝试通过执行以下命令来实现这一点……

create procedure truncate_tables()
begin
declare tab_name varchar(64);
declare done tinyint unsigned default 0;

declare table_cur cursor for select t.table_name
from
information_schema.schemata s
inner join information_schema.tables t on s.schema_name = t.table_schema
where
s.schema_name = database()
and t.table_type = 'BASE TABLE'
and t.table_name not like 'DATABASE%'
and t.table_name != ‘my_table_1’
and t.table_name != ‘my_table_2’
and t.table_name != ‘my_table_3’

and t.table_name != ‘my_table_n-1’
and t.table_name != ‘my_table_n’;

declare continue handler for not found set done = 1;

open table_cur;
repeat
fetch table_cur into tab_name;
set @cmd = concat('truncate table ', tab_name);

prepare stmt from @cmd;
execute stmt;
until done end repeat;

close table_cur;
end

当我探索加快速度的方法时,我是否应该用“NOT IN (list)”子句替换我的众多不等式子句?不确定哪个在 MySQL 中执行得更快,或者是否还有其他效率可以提高。

最佳答案

NOT IN 是一种更清晰的代码编写方式,它使代码更易于维护(更容易添加新表名,更容易理解)。

您正在处理可能不是那么大的系统表。您正在执行的连接可能比 where 子句有更多的开销。而且,您正在使用游标访问数据。对于 where 子句的一些微优化,性能差异可能可以忽略不计。

选择 not in

而且,如果您真的担心,请测试这两种方法并选择更快的一种。

关于mysql - NOT IN 比 MySQL 中的不等式快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22765512/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com