美文网首页
2019-01-10 Mysql 记录

2019-01-10 Mysql 记录

作者: rub1cky | 来源:发表于2019-01-10 10:57 被阅读0次
    • 1.根据查询建立合适的索引(单字段索引和联合索引),不要只设置PRIMARY索引,查询其他字段时会进行全表扫描
    #查看索引
    show  index from tbname;
    #修改索引
    alter table tbname add index (`字段名`, ...)
    

    • 2.按照索引书写查询语句,最左前缀原理
    # 查看查询语句是全表查询还是索引查询
    explain sql;
    

    • 3.distinct
      mysql 用distinct 来查询出某个字段不重复的记录
    select distinct userid from user;
    

    如果同时要查出其他字段,就只能用group by


    • 4.模糊查询
      如果匹配字段前缀字符串, like%, 会采用索引的range查询
      如果匹配字段中间字符串,%like%, 全表查询

    • 5.范围索引
      范围查询只有一个条件可以用到索引查询,同时,索引最多用于一个范围列,因此如果查询条件中有两个范围列则无法全用到索引。

    • 6.查询条件中有表达式
      不会使用索引

    • 7.临时表
    1. 如果GROUP BY 的列没有索引,产生临时表.
    2. 如果GROUP BY时,SELECT的列不止GROUP BY列一个,并且GROUP BY的列不是主键 ,产生临时表.
    3. 如果GROUP BY的列有索引,ORDER BY的列没索引.产生临时表.
    4. 如果GROUP BY的列和ORDER BY的列不一样,即使都有索引也会产生临时表.
    5. 如果GROUP BY或ORDER BY的列不是来自JOIN语句第一个表.会产生临时表.
    6. 如果DISTINCT 和 ORDER BY的列没有索引,产生临时表.
    • 8.Mysql 是先执行内联表然后再进行条件查询的最后再分组

    left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
    right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
    inner join(等值连接) 只返回两个表中联结字段相等的行

    相关文章

      网友评论

          本文标题:2019-01-10 Mysql 记录

          本文链接:https://www.haomeiwen.com/subject/fzeorqtx.html