我们有一个10年前的mysql数据表。对于每个查询,它将搜索2005年至2015年的数据。但是,对我来说最有用的数据将是最近几天或几周。是否可以使用某些命令从表的末尾询问查询。
例如,
select *from Portions where Date="20151126" limit 5;
这个简单的查询需要很长时间才能运行。
答案 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。