如何在以下方案中提高性能

时间:2015-04-15 13:50:54

标签: mysql performance

我有一个表,具有一定数量的列,我已经应用了某种算法,并且能够将现有表分成5个表。这是应用算法后数据库的图像。 enter image description here  所以我将stsi表分为base,card_type,country,cvv ,. STSI具有以下属性.. id,name,phone,email,branch,country,ac_no,credit_card,card_type,cvv。所以在应用算法后,基表有id,name,email,branch,ac_no,credit_card,phone。剩下的属性是card_type,country和cvv。这些属性每个都有一个单独的表。让我们说故事cvv。属性将是id和cvv。 id将是基表的primary_key。因此,根据图像,我能够减少形成的较新表中的行数,因为cvv具有7829行而不是STSI中的9000行,因为STSI中的空值。在空间方面,性能有所提高。但我无法增加时间复杂度。

  

我打算让较新的表格具有较短的时间复杂度,因为它们的行数相对较少。但我无法获得任何性能提升。我尝试过索引,但它没有带来任何性能提升。当在新表上执行时,我可以做些什么来提高时间性能。

ps:查询为
select id,cvv from stsi - 0.0005 seconds select id,cvv from cvv - 0.0005 seconds
我希望第二次查询应该花更少的时间!

1 个答案:

答案 0 :(得分:5)

在0.5ms时,限制器可能是实际系统响应时间(磁盘读取,CPU处理等)而不是查询本身。没有多少优化会缩短响应时间。

作为一般规则,当您查看简单的选择查询(从表中选择val1,val2)时,性能的最大驱动因素将是底层系统配置(主要是磁盘配置和内存可用性)和数据库设计。

使用良好的索引可以通过减少必须读取的数据量来生成结果,从而帮助查询响应时间。在上面的示例中,在包含ID和CCV的CCV表上放置索引可能会随着数据集的增长而产生更快的响应。

我认为,基于你的粗体,你的问题源于STSI比CCV更多的行,你期望CCV更快。实际情况是,您可能会看到第一个约束(系统配置)而不是数据库设计。

半毫秒快死了。我不知道你应该期望在消费级硬件上看到任何更快的东西,即使你将9000行表与9行表进行比较。