美文网首页
mysql使用注意事项

mysql使用注意事项

作者: swoft_ | 来源:发表于2018-05-10 10:25 被阅读0次

    持续更新

    索引失效5大原因

    1. like %开头
    2. where 中列使用函数
    3. or 查询中有不是索引列(联合索引)
    4. 隐式转换
    5. 最左原则

    千万级数据优化4个层级

    1. sql优化,索引优化
    2. 加缓存
    3. 读写分离(提高并发)
    4. 分库分表

    复杂的join查询应该分成多个单个查询

    JOIN 多个表,可能导致更多的锁定和堵塞
    内网创建连接,发起查询时间是可以不计的,所以不需要关注这个时间。
    程序要尽量简单易懂,不应该写过于复杂的sql

    join会锁表,所以建议少用

    -- 下面2种情况会锁住table2
    delete table1  from table1 inner join table2  on table1.id=table2.id  … 
    update tabel1,table2 set table1.name=’feie’ where table1.id=table2.id and table1.id=1; 
    
    

    空值与NULL的区别

    空值不一定为空 例如:如果将一个空值的数据插入到TimesTamp类型的字段中,空值就不一定为空。结果显示的却是插入记录的当前时间

    空值不一定等于空字符

    null 和任何值都不相同,所以 null值的判断不能使用'=' 号,使用is null is not null (索引不会失效,一定亲自测试一下)

    分页的优化

    假如有类似下面分页语句:
    SELECT FROM table1 ORDER BY ftime DESC LIMIT 10000,10;
    这种分页方式会导致大量的io,因为MySQL使用的是提前读取策略。

    推荐分页方式:
    SELECT FROM table1 WHERE ftime < last_time ORDER BY ftime DESC LIMIT 10 (传入上一次分页的界值)

    内连接
    SELECT * FROM table as t1 inner JOIN (SELECT id FROM table ORDER BY time LIMIT 10000,10) as t2 ON t1.id=t2.id

    相关文章

      网友评论

          本文标题:mysql使用注意事项

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