查询中的MySql性能问题

时间:2015-10-29 20:30:21

标签: mysql database performance

我是使用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秒。

  1. 我应该将哪种初始方法应用于此表以提高性能?

  2. MySql是否是处理大型表的正确工具,它将拥有大约5-10百万条记录?或者我应该转移到另一个工具?

1 个答案:

答案 0 :(得分:1)

假设serial是某种数值数据类型......

您只需一次 {/ 1>}。通常,您可以预见到索引的需要,并在创建表时非常便宜地添加它。

既然您已在ADD INDEX上拥有索引,那么选择除了serial以外的任何值都会非常快。

如果只有一行123,则无论是700万行还是70亿行,索引表都会以毫秒为单位吐出该行。

如果serial = 123显示在表的1%中,那么查找所有70M行(7B中的所有行)将比查找所有70K行(7M中的所有行)花费更长的时间。

索引是你的朋友!

如果serial = 123serial,那么......

计划A:将VARCHAR更改为数字类型(如果适用)或

计划B:在serial周围加上引号,以便将字符串与字符串进行比较!