【发布时间】:2016-04-27 19:50:29
【问题描述】:
我有一个超过 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
有没有办法加快我的查询速度?
【问题讨论】:
-
您在
voucher_customer_id和voucher_date上有索引吗?如果该列已编入索引,则使用该列查找数据会快得多。 -
由于您总是查询相同的两个字段,因此组合索引将大大加快处理速度:在 ...id 和 ...date 上设置两个不同的索引并没有太大帮助。
-
非常非常感谢你......现在它的粘性不到 0.05 秒再次感谢你
标签: mysql