我在MySql里有两张桌子
Table_A { pk_A VARCHAR 150 PRIMARY KEY, random_data } ~ 9500 rows
Table_B { pk_B VARCHAR 150, more_random_data } ~ 50000 rows它们之间的关系是一对多的,pk_A在Table_B上会多次被发现.
我的问题是:
如果我在
。
如何提高数据库性能(我可以将pk从varchar修改为int(11)),但我想知道是否有其他解决办法可用
谢谢
发布于 2011-09-10 17:12:02
有几件事情可以加速你的查询。正如许多评论所建议的那样,您总是希望将主键保持在合理范围内。一个短的字符串,比如说VARCHAR(10)不会给你带来很大的痛苦,但是比这更大的话,你可能想要使用一个代孕键。通过使自然键是唯一的,而不是在主键中,这可以或多或少地变得透明。
Table_A { pk_A VARCHAR 150主键,random_data }~ 9500行Table_B { pk_B VARCHAR 150,more_random_data }~ 50000行
您的模式可能看起来有点像这样:
CREATE TABLE `Table_A` (
`id` INTEGER AUTO_INCREMENT PRIMARY KEY,
`A_name` VARCHAR(150) UNIQUE NOT NULL,
-- other columns
) ENGINE = InnoDB;
CREATE TABLE `Table_B` (
`id` INTEGER AUTO_INCREMENT PRIMARY KEY,
`B_name` VARCHAR(150) UNIQUE NOT NULL,
`A_id` INTEGER REFERENCES `Table_A`(`id`),
-- other columns
) ENGINE = InnoDB;https://stackoverflow.com/questions/7373072
复制相似问题