2016-04-27 44 views
0

我有一个需要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

你对'voucher_customer_id'和'voucher_date'指标?如果对列进行索引,则使用列查找数据会更快。 –

+0

由于您总是查询相同的两个字段,组合索引会大幅加快速度:ALTER TABLE vouchers ADD INDEX idx_customer_date(voucher_customer_id,voucher_date);在... id和... date上设置两个不同的索引不会有太大的帮助。 – colburton

+0

非常感谢你的男人..现在它的粘性低于0.05秒再次感谢男人 –

回答

1

为voucher_date创建另一个指标

+0

这并没有提供一个问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 - [来自评论](/评论/低质量帖/ 12170650) – Chris

+0

@chris,对不起克里斯,但我认为这是一个答案,而且我认为这是正确的答案,另一方面它不是批评,我不要求澄清。也许听起来“粗鲁”,因为它很短,但这不是我的意图,英语不是我的母语。 – Mquinteiro

相关问题