MySQL数据库性能选择大/巨大的表

时间:2016-06-10 14:06:41

标签: mysql innodb myisam large-data database

我正在使用MySQL数据库,必须对大型/大型表(例如267,736行和30列)执行一些选择查询。

查询详情:

  • 仅选择查询(表格中的数据是固定的,绝不是更新,插入或删除)
  • 选择所有列的查询(业务要求)
  • 主要限制行数(LIMIT 10指向所有行 - >用户可以选择)
  • 可以按一列或多列排序(此处创建索引无效,因为用户可以按他喜欢的任何列进行排序)
  • 可以按用户选择的值(在一列或多列上过滤的位置)进行过滤

目前查询最多需要2秒钟,这需要很长时间。 有没有办法加快他们的速度?

  • 我应该使用哪个存储引擎:InnoDB / MyISAM /...
  • 我是否应该拥有主键,即使我永远不会使用他?
  • ...?

1 个答案:

答案 0 :(得分:0)

你应该(必须实际)使用索引。

在将要使用WHEREORDER BY的所有列上创建索引。还要研究并使用EXPLAIN来查看索引的影响并优化查询。

如果表中没有包含唯一数据的列,则不必创建主键,但很可能确实有这样的列(id,time ...)。在这种情况下,您应该使用主键来过滤查询。

查询中的列数对SELECT速度几乎没有影响。

只要你制作"只选择查询"存储引擎也无关紧要。 MyISAM可能会快一点,但InnoDB有许多功能,当您决定选择"仅选择查询时,您需要这些功能。必须打破规则。