2014-11-21 116 views
2

我想让员工列表在客户选择的基础上更快地工作。为此,我为client_id字段创建了一个索引。表索引不能正常工作

我附上了表格结构和索引结构的截图。

这是我用于选择的SQL查询。

SELECT staff_client_id,staff_id,staff_full_name from kr_staffs where staff_client_id=2 AND staff_status='active' 

但是查询的速度没有索引是一样的。

这是我的表结构

enter image description here

这是表的索引结构

enter image description here

+0

如何这张桌子里有很多行吗?你如何衡量表现?我认为还有其他的可能会发生:例如,如果你的表有几千行,而查询需要100毫秒才能完成,那么它可能是客户端和数据库服务器之间的网络问题。 – Dai 2014-11-21 06:04:38

+0

@Dai 2000表中的行......并且在网络中没有问题。 – 2014-11-21 06:11:58

回答

0

您可以检查查询执行计划,以确认正在使用的索引。你可以参考EXPLAIN http://dev.mysql.com/doc/refman/5.7/en/using-explain.html

你能代替测量采取以下查询(有或无指标)时间:自kr_staffs

SELECT COUNT(*)WHERE staff_client_id = 2,staff_status = '主动'

+0

我试过你的查询与索引和索引。他们两人都在同一时间。 – 2014-11-21 09:36:52

+0

@JohnMathew如果有很多staff_client_id = 2的记录,那么查询优化器可能会决定执行全表扫描而不是非聚簇索引。如果使用索引,则必须查找每条记录(用于检查staff_status或提取数据),这可能比直接执行表扫描更昂贵。 – naresh 2015-05-14 07:44:21