在某些情况下,在生产环境中运行UPDATE语句可以节省时间。然而,一个糟糕的更新可能比最初的问题更糟糕。没有使用测试数据库,有哪些选项可以告诉更新语句在运行之前会做什么? 最佳答案 事务呢?它们具有ROLLBACK功能。@见https://dev.mysql.com/doc/refman/5.0/en/commit.html例如:STARTTRANSACTION;SELECT*FROMnicetableWHEREsomthing=1;UPDATEnicetableSETnicefield='VALUE'WHEREsomthing=1
在MySQL中,没有办法为某个数据库指定存储引擎,只能为单个表指定存储引擎。但是,您可以指定在一个session期间使用的存储引擎:SETstorage_engine=InnoDB;因此您不必为每个表指定它。如果确实所有表都在使用InnoDB,我该如何确认? 最佳答案 如果使用SHOWCREATETABLE,则必须将引擎解析出查询。从INFORMATION_SCHEMA数据库中选择是不好的做法,因为开发人员保留随时更改其架构的权利(尽管不太可能)。要使用的正确查询是SHOWTABLESTATUS-您可以获取数据库中所有表的信息:SH
在MySQL中,没有办法为某个数据库指定存储引擎,只能为单个表指定存储引擎。但是,您可以指定在一个session期间使用的存储引擎:SETstorage_engine=InnoDB;因此您不必为每个表指定它。如果确实所有表都在使用InnoDB,我该如何确认? 最佳答案 如果使用SHOWCREATETABLE,则必须将引擎解析出查询。从INFORMATION_SCHEMA数据库中选择是不好的做法,因为开发人员保留随时更改其架构的权利(尽管不太可能)。要使用的正确查询是SHOWTABLESTATUS-您可以获取数据库中所有表的信息:SH
MySQL中的InnoDB和MyISAM是什么? 最佳答案 InnoDB和MYISAM是MySQL的存储引擎。这两者在锁定实现上有所不同:InnoDB锁定表中的特定行,MyISAM锁定整个MySQL表。您可以通过在DB中创建表时给出MYISAMORInnoDB来指定类型。 关于mysql-MySQL中的InnoDB和MyISAM是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/question
MySQL中的InnoDB和MyISAM是什么? 最佳答案 InnoDB和MYISAM是MySQL的存储引擎。这两者在锁定实现上有所不同:InnoDB锁定表中的特定行,MyISAM锁定整个MySQL表。您可以通过在DB中创建表时给出MYISAMORInnoDB来指定类型。 关于mysql-MySQL中的InnoDB和MyISAM是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/question
这是我正在使用的密集设置的严重过度简化。table_1和table_2都有自增代理主键作为ID。info是一个表,其中包含有关table_1和table_2的信息。table_1(id,field)table_2(id,field,field)info(???,field)我正在尝试决定是否应该将info的主键组合成来自table_1和table_2的ID。如果我要这样做,哪一个最有意义?(在本例中,我将ID11209与ID437组合在一起)INT(9)11209437(我可以想象为什么这很糟糕)VARCHAR(10)11209-437十进制(10,4)11209.437还是别的什么?
这是我正在使用的密集设置的严重过度简化。table_1和table_2都有自增代理主键作为ID。info是一个表,其中包含有关table_1和table_2的信息。table_1(id,field)table_2(id,field,field)info(???,field)我正在尝试决定是否应该将info的主键组合成来自table_1和table_2的ID。如果我要这样做,哪一个最有意义?(在本例中,我将ID11209与ID437组合在一起)INT(9)11209437(我可以想象为什么这很糟糕)VARCHAR(10)11209-437十进制(10,4)11209.437还是别的什么?
我知道我可以单独发出一个altertable来将表存储从MyISAM更改为InnoDB。我想知道是否有一种方法可以快速将它们全部更改为InnoDB? 最佳答案 运行此SQL语句(在MySQL客户端、phpMyAdmin或任何地方)以检索数据库中的所有MyISAM表。将name_of_your_db变量的值替换为您的数据库名称。SET@DATABASE_NAME='name_of_your_db';SELECTCONCAT('ALTERTABLE`',table_name,'`ENGINE=InnoDB;')ASsql_stateme
我知道我可以单独发出一个altertable来将表存储从MyISAM更改为InnoDB。我想知道是否有一种方法可以快速将它们全部更改为InnoDB? 最佳答案 运行此SQL语句(在MySQL客户端、phpMyAdmin或任何地方)以检索数据库中的所有MyISAM表。将name_of_your_db变量的值替换为您的数据库名称。SET@DATABASE_NAME='name_of_your_db';SELECTCONCAT('ALTERTABLE`',table_name,'`ENGINE=InnoDB;')ASsql_stateme
这个问题在这里已经有了答案:MyISAMversusInnoDB[closed](25个回答)关闭9年前。我知道这个问题以前曾被问过,但大多数时候是针对特定数据库或表提出的。我无法在此站点上找到描述这两个引擎及其差异的答案,而不考虑某人的特定数据库。我希望将来能够在设计表或数据库方面做出更明智的决定,因此我正在寻找关于两种存储引擎之间差异的全面答案。MyISAM和有什么区别?和InnoDB,当我试图在其中一个或另一个之间做出决定时,我应该寻找什么? 最佳答案 InnoDB和MyISAM之间的主要区别(“关于设计表或数据库”您询问)是