我的查询时间超过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
有没有办法加快查询速度?
答案 0 :(得分:2)
你想要使用MySQL" EXPLAIN"确定发生了什么以及为什么。
http://dev.mysql.com/doc/refman/5.7/en/explain.html
为此,只需添加" EXPLAIN"在你的陈述之前:
EXPLAIN select *
from vouchers
where voucher_customer_id = **
and voucher_date between date and date
它将为您提供有关可用密钥的信息,需要搜索的行数等等。
您可以使用该信息来确定其运行缓慢的原因以及如何提高速度。
一旦你运行它,你就可以使用许多在线资源解释(没有双关语)如何使用" EXPLAIN"结果。以下是一些:
http://www.sitepoint.com/using-explain-to-write-better-mysql-queries/
答案 1 :(得分:1)
为voucher_date创建另一个索引