mysql里where条件中包含or应该怎么建立有效的索引。
SELECT   t.*   FROM   cdb_threads   t   WHERE   (t.fid= '2 '   Or   t.otherfid= '2 ')   AND   t.displayorder> =0   ORDER   BY   t.displayorder   DESC,   t.lastpost   DESC   LIMIT   0,   20 
 这条SQL语句应该如何优化建立索引呢, 
 ALTER   TABLE   `cdb_threads`   ADD   INDEX   `otherfid`   (   `fid`   ,   `otherfid`   ,   `displayorder`   ,   `lastpost`   ) 
 我建立上面的索引后使用EXPLAIN分析了一下 
 EXPLAIN   SELECT   t.*   FROM   cdb_threads   t   WHERE   (t.fid= '2 '   Or   t.otherfid= '2 ')   AND   t.displayorder> =0   ORDER   BY   t.displayorder   DESC,   t.lastpost   DESC   LIMIT   0,   20    
 发现没有使用索引哦,是不是有OR在查询条件里面不能使用索引?
------解决方案--------------------看一下手册上的索引合并优化部分就明白了。 
 如果同时有OR和 AND的话。优化器只考虑AND部分的优化。 
 所以你要对displayorder建立索引。
------解决方案--------------------你可以这样强制使用OR条件中的字段作为索引。   
 SELECT t.* FROM cdb_threads t FORCE INDEX(t.fid,t.otherfid) WHERE (t.fid= '2 ' Or t.otherfid= '2 ') AND t.displayorder> =0 ORDER BY t.displayorder DESC, t.lastpost DESC LIMIT 0, 20