我是使用MySql的新手。我正在审查一张大约有200,000张的桌子 记录。当我执行一个简单的:
SELECT * FROM X WHERE Serial=123
它需要很长时间,大约15-30秒返回响应(有200,000行)。
在添加索引之前,需要大约50秒(有700万)才能返回一个简单的select where语句。 此表每天都会增加行数。现在它有700万行。我以下列方式添加了一个索引:
ALTER TABLE `X` ADD INDEX `index_name` (`serial`)
现在返回响应需要109秒。
我应该将哪种初始方法应用于此表以提高性能?
MySql是否是处理大型表的正确工具,它将拥有大约5-10百万条记录?或者我应该转移到另一个工具?
答案 0 :(得分:1)
假设serial
是某种数值数据类型......
您只需一次 {/ 1>}。通常,您可以预见到索引的需要,并在创建表时非常便宜地添加它。
既然您已在ADD INDEX
上拥有索引,那么选择除了serial
以外的任何值都会非常快。
如果只有一行123
,则无论是700万行还是70亿行,索引表都会以毫秒为单位吐出该行。
如果serial = 123
显示在表的1%中,那么查找所有70M行(7B中的所有行)将比查找所有70K行(7M中的所有行)花费更长的时间。
索引是你的朋友!
如果serial = 123
是serial
,那么......
计划A:将VARCHAR
更改为数字类型(如果适用)或
计划B:在serial
周围加上引号,以便将字符串与字符串进行比较!