加快Mysql查询搜索速度

时间:2015-11-26 14:32:06

标签: mysql

我们有一个10年前的mysql数据表。对于每个查询,它将搜索2005年至2015年的数据。但是,对我来说最有用的数据将是最近几天或几周。是否可以使用某些命令从表的末尾询问查询。

例如,

select *from Portions where Date="20151126" limit 5;

这个简单的查询需要很长时间才能运行。

2 个答案:

答案 0 :(得分:0)

首先,检查数据库的结构。您可能已将日期保存为VARCHAR,而应将其保存为DATE

下一个重要的部分是确保您的桌子上有一个主键,它应该是INT类型,并且是您的主键。您还应该进行此自动增量,以便保留表的唯一ID。这是结构:

--
-- Table structure for table `portions`
--
CREATE TABLE IF NOT EXISTS `portions` (
  `id` int(11) NOT NULL,
  `date` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Indexes for table `portions`
--
ALTER TABLE `portions`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT for table `portions`
--
ALTER TABLE `portions`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

确保此结构正确并使用正确的语法进行查询:

SELECT * FROM `portions` WHERE `date` = '2015-11-26' LIMIT 5;

现在,你应该发现你的查询要快得多。

答案 1 :(得分:0)

您应该考虑在此方案中使用实体化视图。如果您想使用它,请参阅here