我不太精通 MySQL 中的索引,并且很难理解EXPLAIN
输出是如何工作的,以及如何读取它以了解我的查询是否经过优化。
我有一个相当大的表(1.1M 记录),我正在执行以下查询:
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
我应该使用的查询的重要输出是什么?