我有一个查询需要超过2秒。
下面是我的表模式:
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多万行。
该查询如下所示:
select *
from vouchers
where voucher_customer_id = **
and voucher_date between date and date 有时候看起来是这样的:
select sum(voucher_amount)
from vouchers
where voucher_customer_id=**
and voucher_date> date limit 1有没有办法加快我的查询速度?
发布于 2016-04-27 19:57:56
您需要使用MySQL“解释”来确定发生了什么以及原因。
http://dev.mysql.com/doc/refman/5.7/en/explain.html
要做到这一点,只需在以下声明之前添加“解释”:
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/
发布于 2016-04-27 20:00:31
为voucher_date创建另一个索引
https://stackoverflow.com/questions/36899591
复制相似问题