我们有一个已有 10 年历史的 mysql 数据表。对于每个查询,它将搜索 2005 年至 2015 年的数据。但是,对我来说最有用的数据将是最近几天或几周。是否可以使用某些命令从表末尾询问查询搜索。
例如,
select *from Portions where Date="20151126" limit 5;
这个简单的查询需要很长时间才能运行。
最佳答案
首先,检查数据库的结构。您可能已将日期保存为 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;
现在,您应该发现查询速度快得多。
关于mysql - 加快Mysql查询搜索速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33941155/