我的MySQL数据库包含几个使用不同存储引擎的表 (特别是myisam和innodb)。我怎样才能找出哪些表格 使用哪种引擎?
答案 0 :(得分:459)
SHOW TABLE STATUS WHERE Name = 'xxx'
这将为您(除其他外)提供Engine
列,这就是您想要的。
答案 1 :(得分:217)
要显示数据库及其引擎中所有表的列表,请使用以下SQL查询:
SELECT TABLE_NAME,
ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'dbname';
将dbname
替换为您的数据库名称。
答案 2 :(得分:47)
SHOW CREATE TABLE <tablename>;
比SHOW TABLE STATUS
更易解析但更具可读性。
答案 3 :(得分:39)
或只是
show table status;
这将列出数据库中的所有表。
答案 4 :(得分:13)
对Jocker的回应进行了一些调整(我会发表评论,但我还没有足够的业力):
SELECT TABLE_NAME, ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'database' AND ENGINE IS NOT NULL;
这会从列表中排除MySQL视图,这些视图没有引擎。
答案 5 :(得分:9)
SHOW CREATE TABLE <tablename>\G
与的输出相比,将格式化得更好
SHOW CREATE TABLE <tablename>;
\G
技巧对于记住许多其他查询/命令也很有用。
答案 6 :(得分:7)
mysqlshow -i <database_name>
将显示特定数据库的所有表的信息。
mysqlshow -i <database_name> <table_name>
只针对特定的表格。
答案 7 :(得分:3)
如果您正在使用MySQL Workbench,则可以右键单击该表并选择“更改表格”。
在该窗口中,您可以看到表格引擎并更改它。
答案 8 :(得分:2)
如果您是Linux用户:
显示mysql服务器上所有数据库的所有表的引擎,没有表information_schema
,mysql
,performance_schema
:
less < <({ for i in $(mysql -e "show databases;" | cat | grep -v -e Database-e information_schema -e mysql -e performance_schema); do echo "--------------------$i--------------------"; mysql -e "use $i; show table status;"; done } | column -t)
如果你在linux上,至少可能会喜欢这个。
将打开less
中所有表格的所有信息,按-S
切断过长的行。
示例输出:
--------------------information_schema--------------------
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time C
CHARACTER_SETS MEMORY 10 Fixed NULL 384 0 16434816 0 0 NULL 2015-07-13 15:48:45 NULL N
COLLATIONS MEMORY 10 Fixed NULL 231 0 16704765 0 0 NULL 2015-07-13 15:48:45 NULL N
COLLATION_CHARACTER_SET_APPLICABILITY MEMORY 10 Fixed NULL 195 0 16357770 0 0 NULL 2015-07-13 15:48:45 NULL N
COLUMNS MyISAM 10 Dynamic NULL 0 0 281474976710655 1024 0 NULL 2015-07-13 15:48:45 2015-07-13 1
COLUMN_PRIVILEGES MEMORY 10 Fixed NULL 2565 0 16757145 0 0 NULL 2015-07-13 15:48:45 NULL N
ENGINES MEMORY 10 Fixed NULL 490 0 16574250 0 0 NULL 2015-07-13 15:48:45 NULL N
EVENTS MyISAM 10 Dynamic NULL 0 0 281474976710655 1024 0 NULL 2015-07-13 15:48:45 2015-07-13 1
FILES MEMORY 10 Fixed NULL 2677 0 16758020 0 0 NULL 2015-07-13 15:48:45 NULL N
GLOBAL_STATUS MEMORY 10 Fixed NULL 3268 0 16755036 0 0 NULL 2015-07-13 15:48:45 NULL N
GLOBAL_VARIABLES MEMORY 10 Fixed NULL 3268 0 16755036 0 0 NULL 2015-07-13 15:48:45 NULL N
KEY_COLUMN_USAGE MEMORY 10 Fixed NULL 4637 0 16762755 0
.
.
.
答案 9 :(得分:1)
另一种方式,也许是获得单个或匹配表集状态的最短时间:
SHOW TABLE STATUS LIKE 'table';
然后您可以使用LIKE运算符,例如:
SHOW TABLE STATUS LIKE 'field_data_%';
答案 10 :(得分:1)
答案 11 :(得分:0)
转到information_schema数据库,你会找到'tables'表然后选择它;
Mysql&gt;使用information_schema; MySQL的&GT; select table_name,table from tables;
答案 12 :(得分:0)
如果您是 GUI 的人,并且只想在 PhpMyAdmin 中找到它,则可以选择您选择的表,然后转到Operations
标签> > Table options
>> Storage Engine
。
您甚至可以使用下拉选项列表从那里进行更改。
PS:本指南基于PhpMyAdmin的4.8版本。对于非常老的版本,无法保证使用相同的路径。