2010-09-10 8 views

Odpowiedz

4

Można użyć wartości SHOW CREATE TABLE i wyszukać w odpowiedzi część ENGINE.

SHOW CREATE TABLE users; 

przykład:

CREATE TABLE innodb_table (id int, value int) ENGINE=INNODB; 
CREATE TABLE myisam_table (id int, value int) ENGINE=MYISAM; 
CREATE TABLE default_table (id int, value int); 

Wynik dla innodb_table:

SHOW CREATE TABLE innodb_table; 
+--------------+----------------------------------------------------------------------------------------------------------------------------------+ 
| Table  | Create Table                              | 
+--------------+----------------------------------------------------------------------------------------------------------------------------------+ 
| innodb_table | CREATE TABLE `innodb_table` (
    `id` int(11) DEFAULT NULL, 
    `value` int(11) DEFAULT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 | 
+--------------+----------------------------------------------------------------------------------------------------------------------------------+ 
1 row in set (0.00 sec) 

Wynik dla myisam_table:

SHOW CREATE TABLE myisam_table; 
+--------------+----------------------------------------------------------------------------------------------------------------------------------+ 
| Table  | Create Table                              | 
+--------------+----------------------------------------------------------------------------------------------------------------------------------+ 
| myisam_table | CREATE TABLE `myisam_table` (
    `id` int(11) DEFAULT NULL, 
    `value` int(11) DEFAULT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 | 
+--------------+----------------------------------------------------------------------------------------------------------------------------------+ 
1 row in set (0.00 sec) 

Wynik dla default_table:

SHOW CREATE TABLE default_table; 
+---------------+-----------------------------------------------------------------------------------------------------------------------------------+ 
| Table   | Create Table                              | 
+---------------+-----------------------------------------------------------------------------------------------------------------------------------+ 
| default_table | CREATE TABLE `default_table` (
    `id` int(11) DEFAULT NULL, 
    `value` int(11) DEFAULT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 | 
+---------------+-----------------------------------------------------------------------------------------------------------------------------------+ 
1 row in set (0.00 sec) 
+0

-1: Jest to bezużytecznie kosztowny sposób poznania mechanizmu magazynowania. –

+1

@Andrew: Ile to kosztuje? ... Technicznie twoja odpowiedź jest prawdopodobnie lepsza, ale odpowiedź 'SHOW CREATE TABLE' jest nie tylko łatwiejsza do odczytania (moim zdaniem), ale także krótsza do wpisania. –

+3

+1. Jest to prawdopodobnie najczęstszy i najłatwiejszy do zapamiętania sposób sprawdzenia mechanizmu magazynowania, nawet jeśli jest lekko "hałaśliwy". – wuputah

37

Możesz użyć SHOW TABLE STATUS, aby zobaczyć informacje o tabeli.

SHOW TABLE STATUS WHERE `Name` = 'my_table'; 

Wystarczy sprawdzić wartość kolumny Engine w zwróconym zbiorze wiedzieć, jakie silnik tabela jest używana.

16
SELECT ENGINE 
FROM INFORMATION_SCHEMA.TABLES 

WHERE TABLE_NAME='your_table_name' 
AND TABLE_SCHEMA='your_database_name'; 
-- or use TABLE_SCHEMA=DATABASE() if you have a default one. 
Powiązane problemy