谁能告诉我如何在MySQL中添加键缩放?我在数据库中有500,000,000行,trans,列i(INTUNSIGNED)、j(INTUNSIGNED)、nu(DOUBLE)、A(DOUBLE)。我尝试索引一列,例如ALTERTABLEtransADDKEYidx_A(A);我等着。对于14,000,000行的表,在我的MacBookPro上执行大约需要2分钟,但对于整个50亿行,它需要15小时并且还在计数。是我做错了什么,还是我只是对索引数据库如何随行数扩展而天真? 最佳答案 有几个因素需要考虑:排序是一个N.log(N)操作。1
谁能告诉我如何在MySQL中添加键缩放?我在数据库中有500,000,000行,trans,列i(INTUNSIGNED)、j(INTUNSIGNED)、nu(DOUBLE)、A(DOUBLE)。我尝试索引一列,例如ALTERTABLEtransADDKEYidx_A(A);我等着。对于14,000,000行的表,在我的MacBookPro上执行大约需要2分钟,但对于整个50亿行,它需要15小时并且还在计数。是我做错了什么,还是我只是对索引数据库如何随行数扩展而天真? 最佳答案 有几个因素需要考虑:排序是一个N.log(N)操作。1
它是这样创建的:createtablelistings(idintegerunsignedNOTNULLAUTO_INCREMENT,accountIdintegerunsigneddefaultnull,titlevarchar(300)notnull,countryintegerunsigned,regionintegerunsigned,typeintegerunsigned,priceinteger,unitvarchar(20)notnull,priceUSDdecimal(12,2),bedroomsintegerunsigned,thumbnailvarchar(100)
它是这样创建的:createtablelistings(idintegerunsignedNOTNULLAUTO_INCREMENT,accountIdintegerunsigneddefaultnull,titlevarchar(300)notnull,countryintegerunsigned,regionintegerunsigned,typeintegerunsigned,priceinteger,unitvarchar(20)notnull,priceUSDdecimal(12,2),bedroomsintegerunsigned,thumbnailvarchar(100)
文档中没有明确提及(http://dev.mysql.com/doc/refman/6.0/en/drop-table.html)。我之所以问,是因为我刚刚在Rails项目中看到了一个奇怪的数据库迁移,开发人员在删除表之前删除了所有索引,这似乎没有必要。 最佳答案 是的,确实如此。但是,如果您有诸如RESTRICT之类的外键约束来确保与其他表的引用完整性,那么您需要在删除或截断表之前删除这些键。 关于mysql-在MySQL中删除表是否也会删除索引?,我们在StackOverflow上找
文档中没有明确提及(http://dev.mysql.com/doc/refman/6.0/en/drop-table.html)。我之所以问,是因为我刚刚在Rails项目中看到了一个奇怪的数据库迁移,开发人员在删除表之前删除了所有索引,这似乎没有必要。 最佳答案 是的,确实如此。但是,如果您有诸如RESTRICT之类的外键约束来确保与其他表的引用完整性,那么您需要在删除或截断表之前删除这些键。 关于mysql-在MySQL中删除表是否也会删除索引?,我们在StackOverflow上找
我有以下形式的查询:SELECT*FROMMyTableWHERETimestamp>[SomeTime]ANDTimestamp我想优化这个查询,我正在考虑在时间戳上放置一个索引,但不确定这是否有帮助。理想情况下,我想让时间戳成为聚集索引,但MySQL不支持聚集索引,除了主键。MyTable有400万多行。Timestamp实际上是INT类型。一旦插入一行,就永远不会改变。任何给定Timestamp的行数平均约为20,但可能高达200。新插入的行的Timestamp大于大多数现有行,但可能小于某些最近的行。Timestamp上的索引能否帮助我优化此查询?
我有以下形式的查询:SELECT*FROMMyTableWHERETimestamp>[SomeTime]ANDTimestamp我想优化这个查询,我正在考虑在时间戳上放置一个索引,但不确定这是否有帮助。理想情况下,我想让时间戳成为聚集索引,但MySQL不支持聚集索引,除了主键。MyTable有400万多行。Timestamp实际上是INT类型。一旦插入一行,就永远不会改变。任何给定Timestamp的行数平均约为20,但可能高达200。新插入的行的Timestamp大于大多数现有行,但可能小于某些最近的行。Timestamp上的索引能否帮助我优化此查询?
我可以复制一个MySQL表来创建一个新表:CREATETABLEnewtableSELECT*FROMoldtable这可行,但索引不会复制到新表中。如何复制包含索引的表? 最佳答案 CREATETABLEnewtableLIKEoldtable;INSERTINTOnewtableSELECT*FROMoldtable; 关于mysql-复制包含索引的MySQL表,我们在StackOverflow上找到一个类似的问题: https://stackoverfl
我可以复制一个MySQL表来创建一个新表:CREATETABLEnewtableSELECT*FROMoldtable这可行,但索引不会复制到新表中。如何复制包含索引的表? 最佳答案 CREATETABLEnewtableLIKEoldtable;INSERTINTOnewtableSELECT*FROMoldtable; 关于mysql-复制包含索引的MySQL表,我们在StackOverflow上找到一个类似的问题: https://stackoverfl