gpt4 book ai didi

mysql - 使用 MyISAM 优化所有 MySQL 表

转载 作者:行者123 更新时间:2023-11-29 05:58:55 24 4
gpt4 key购买 nike

我在这里找到了很棒的文章 http://www.empulsegroup.com/?p=342

但是当我尝试时:

root@vps:~# for i in `mysql -e 'select concat(table_schema,".",table_name) from information_schema.tables where engine="MyISAM"'`; do mysql -e "optimize table $i"; done
ERROR 1046 (3D000) at line 1: No database selected
  1. 你能给我一些使用它的例子吗?
  2. 如何优化 --all-databases?

非常感谢您的宝贵时间。

最佳答案

尽管那篇文章中有声明,您可能不需要经常运行优化表。它确实不会使查询运行得更快。

但让我们谈谈您遇到的错误以及如何修复它。

查询的第一行输出不是表名,而是列标题,在本例中是您使用的表达式。

for i in `mysql -e 'select concat(table_schema,".",table_name) from information_schema.tables where engine="MyISAM"'`; 
do
echo "$i";
done

输出:

concat(table_schema,".",table_name)
test.m

(我必须创建一个表m,它是 MyISAM,因为我通常不使用 MyISAM,我推荐 you should not use MyISAM either。)

如果要跳过列标题,请使用 -N--skip-column-names 选项。

for i in `mysql -N -e 'select concat(table_schema,".",table_name) from information_schema.tables where engine="MyISAM"'`; 
do
echo "$i";
done

输出:

test.m

您可能还想分隔架构和表名,因为这两个名称都可能是保留字。

for i in `mysql -N -e 'select concat("\`",table_schema,"\`.\`",table_name,"\`") from information_schema.tables where engine="MyISAM"'`; 
do
echo "$i";
done

输出:

`test`.`m`

关于mysql - 使用 MyISAM 优化所有 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46744163/

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