首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询时间超过2秒。

查询时间超过2秒。
EN

Stack Overflow用户
提问于 2016-04-27 19:50:29
回答 2查看 145关注 0票数 0

我有一个查询需要超过2秒。

下面是我的表模式:

代码语言:javascript
复制
CREATE TABLE `vouchers` (
  `id` int(11) NOT NULL,
  `voucher_dealer` int(11) NOT NULL,
  `voucher_number` varchar(20) NOT NULL,
  `voucher_customer_id` int(11) NOT NULL,
  `voucher_date` date NOT NULL,
  `voucher_added_date` datetime NOT NULL,
  `voucher_type` int(11) NOT NULL,
  `voucher_amount` double NOT NULL,
  `voucher_last_debt` double NOT NULL,
  `voucher_total_debt` double NOT NULL,
  `voucher_pay_method` int(11) NOT NULL,
  `voucher_note` text NOT NULL,
  `voucher_inserter` int(11) NOT NULL
)

主键是id,是自动递增的。该表有100多万行。

该查询如下所示:

代码语言:javascript
复制
select * 
from vouchers 
where voucher_customer_id = ** 
  and voucher_date between date and date 

有时候看起来是这样的:

代码语言:javascript
复制
select sum(voucher_amount) 
from vouchers 
where voucher_customer_id=** 
  and voucher_date> date limit 1

有没有办法加快我的查询速度?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-27 19:57:56

您需要使用MySQL“解释”来确定发生了什么以及原因。

http://dev.mysql.com/doc/refman/5.7/en/explain.html

要做到这一点,只需在以下声明之前添加“解释”:

代码语言:javascript
复制
EXPLAIN select * 
from vouchers 
where voucher_customer_id = ** 
  and voucher_date between date and date 

它将为您提供有关可用键、search...etc需要多少行等方面的信息。

您可以使用这些信息来确定它运行缓慢的原因,以及如何提高它的速度。

一旦您运行了它,您就可以使用许多在线资源中的任何一个来解释(没有双关意)如何使用“解释”结果。以下是一些:

http://www.sitepoint.com/using-explain-to-write-better-mysql-queries/

How to optimise MySQL queries based on EXPLAIN plan

https://www.digitalocean.com/community/tutorials/how-to-optimize-queries-and-tables-in-mysql-and-mariadb-on-a-vps

票数 2
EN

Stack Overflow用户

发布于 2016-04-27 20:00:31

为voucher_date创建另一个索引

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36899591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档