快速的问题:我已经创build了可以预热我的数据库的命令。 事情是这些select是大的。 当我做这样的select时,我把所有“jiba-jaba”都放到terminal窗口中。 你怎么能让mysql做“安静”的select? 不用花时间把所有的垃圾打印到我的terminal上?
您可以通过使用shell的I / Oredirect操作符来redirect任何命令的输出,而不仅仅是MySQL。 例如,在bash中:
$ mysql mydb < commands.sql > /dev/null 2>&1
这将启动MySQL命令行客户端,将其连接到本地系统上的“mydb”(假设您有权访问),从文件commands.sql
读取SQL commands.sql
并将所有输出转储到/dev/null
。
如果您想在事后保存输出以供查看,则可以将其redirect到文件而不是/dev/null
:
$ mysql mydb < commands.sql > output.txt 2>&1
2>&1
redirectstderr
以及stdout
。 如果你想在你的terminal上看到任何错误,你只能redirectstdout
:
$ mysql mydb < commands.sql > /dev/null
MySQL的客户端:
mysql> pager > /dev/null PAGER set to '> /dev/null' mysql> select 1; 1 row in set (0.00 sec) mysql> \q Bye
这样查询的结果不会被打印出来,只有行计数一个时间信息。
在shell中的IOredirect
user@host$ mysql -e 'select 1' > /dev/null user@host$
如果目的是预热caching,你也可以做一些事情:
从mytable中selectmax(concat(col1,col2))…
引擎被迫读取真实页面来计算最大值(无论如何,相对于I / O来说,开销都很小)
请注意,如果仅select索引中的列,则只有索引是红色的,不需要转到表本身(“封面索引”)。
在某些情况下,您可能需要完全相同(只将索引加载到caching中)
这是MySQL的Unix安装工作。 由于Windows在mysql安装中既没有/ dev / null也没有分页程序命令,所以在windows上安装的mysql将不起作用。
在Windows上的Mysql(在Unix上),你可以使用SELECT 1 INTO OUTFILE'file_name'或设置一个variables并使用SELECT 1 INTO @var; 看看这里的文档: http : //dev.mysql.com/doc/refman/5.0/en/select.html
请记住,您不能覆盖outfile,因此INTO Outfile将不适用于重复select。