【发布时间】:2013-11-08 08:56:21
【问题描述】:
我不太精通 MySQL 中的索引,并且很难理解 EXPLAIN 输出的工作原理,以及如何读取它以了解我的查询是否经过优化。
我有一个相当大的表(110 万条记录),我正在执行以下查询:
SELECT * FROM `Member` this_ WHERE (this_._Temporary_Flag = 0 or this_._Temporary_Flag
is null) and (this_._Deleted = 0 or this_._Deleted is null) and
(this_.Username = 'XXXXXXXX' or this_.Email = 'XXXXXXXX')
ORDER BY this_.Priority asc;
执行需要很长时间,大部分时间在 30 到 60 秒之间。 EXPLAIN 查询的输出如下:
id select_type table type possible_keys key key_len ref rows Extra
----------------------------------------------------------------------------------------------------------------------------------
1 SIMPLE this_ ref_or_null _Temporary_Flag,_Deleted,username,email _Temporary_Flag 2 const 33735 Using where; Using filesort
这句话究竟是什么意思?这是否意味着可以优化此查询?该表主要具有单列索引。我应该使用EXPLAIN 查询的重要输出是什么?
【问题讨论】:
标签: mysql indexing database-performance