Vas*_*lis 0 mysql sql performance database-schema
我有一个包含大约500K作业的表,每个作业都有一个唯一的ID用作主键,状态用于指示作业是挂起,完成还是失败.状态是一个非关键的整数.
我的问题是,我尝试根据状态选择作业的简单查询需要花费太多时间,超过10分钟.在DB中连接了大约46个线程,我也重新启动但它没有帮助性能.
我粘贴了表模式和我尝试在此运行的查询:http: //pastie.org/10416054
有没有办法找到瓶颈和优化表,所以它不需要那么长时间?
Dre*_*rew 11
几个小时后,我会匆匆离开以下命令:
CREATE INDEX idx_qry_status ON queries(status);
Run Code Online (Sandbox Code Playgroud)
由于您的查询正在执行表扫描,因此不使用任何索引.
请参阅创建索引的手册页面.
表格后的视觉效果(不是表现方式):
create table queries
( id bigint auto_increment primary key,
status int null
-- partial definition
);
insert queries (status) values (7),(2),(1),(4),(1),(5),(9),(11);
CREATE INDEX idx_qry_status ON queries(status);
show indexes from queries;
+---------+------------+----------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+---------+------------+----------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| queries | 0 | PRIMARY | 1 | id | A | 8 | NULL | NULL | | BTREE | | |
| queries | 1 | idx_qry_status | 1 | status | A | 8 | NULL | NULL | YES | BTREE | | |
+---------+------------+----------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |