相同的服务器,相同的查询,为什么我得到不同的查询执行时间?

时间:2016-05-11 11:47:45

标签: mysql database query-optimization

我对MySQL服务器进行了以下查询。

select ORDER_ID,CUSTOMER_ID,PRICE,AMOUNT,ITEM_ID,ORDER_TIME 
from MY_ORDER order by ORDER_ID desc limit 10000;

ORDER_ID是表格的主键。

通常,执行该查询几乎大约20毫秒(不包括获取时间)。 但有时候,耗时超过60毫秒。

我的问题是: 在相同的查询,相同的服务器,相同的架构下,什么时候可能是这么慢执行的原因?

2 个答案:

答案 0 :(得分:0)

为什么执行时间不同?有许多可能的原因......

表InnoDB?还是MyISAM? (我的答案可能需要改变。)

该查询可能会触发100个数据块。假设您使用的是InnoDB,innodb_buffer_pool_size有多大?如果它不超过100个块(1-2MB),则可能会出现其他一些进程并将块从缓存中移出,从而需要从磁盘重新加载。这样的I / O比从缓存中读取要慢得多。

该表上的另一个操作(可能是插入一行)是否会出现?尽管InnoDB非常擅长允许多个线程(连接)与同一个表进行通信,但它有时会花费一些时间。

答案 1 :(得分:-1)

你必须在Order_id,customer_id,item_id

上制作索引