初学者。。一个表里面大概有五千万条数据。
经常用到的查询是
select * from aa where username='xx'
select * from aa where email='[email protected]'select * from aa where username='xx' or email='[email protected]' 所以我用
alter table aa add index name_email(username,email)给这个表加上索引,加完以后 where username='xx' 的查询很快。
但是where email='[email protected]' 的查询仍然很慢,这是为啥啊?不是两个列都加上索引了么?应该怎么做。

解决方案 »

  1.   

    分开建索引.create index xxx1 on aa(username);
    create index xxx2 on aa(email);
      

  2.   

    原理请参考手册中的讲解。MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
    7.2. 优化SELECT语句和其它查询
    7.2.1. EXPLAIN语法(获取SELECT相关信息)
    7.2.2. 估计查询性能
    7.2.3. SELECT查询的速度
    7.2.4. MySQL怎样优化WHERE子句
    7.2.5. 范围优化
    7.2.6. 索引合并优化
    7.2.7. MySQL如何优化IS NULL
    7.2.8. MySQL如何优化DISTINCT
    7.2.9. MySQL如何优化LEFT JOIN和RIGHT JOIN
    7.2.10. MySQL如何优化嵌套Join
    7.2.11. MySQL如何简化外部联合
    7.2.12. MySQL如何优化ORDER BY
    7.2.13. MySQL如何优化GROUP BY
    7.2.14. MySQL如何优化LIMIT
    7.2.15. 如何避免表扫描
    7.2.16. INSERT语句的速度
    7.2.17. UPDATE语句的速度
    7.2.18. DELETE语句的速度
    7.2.19. 其它优化技巧