zoukankan      html  css  js  c++  java
  • MySQL 优化

    MySQL 优化

    • 表关联查询时务必遵循 小表驱动大表 原则;
    • 使用查询语句 where 条件时,不允许出现 函数,否则索引会失效;
    • 使用单表查询时,相同字段尽量不要用 OR,因为可能导致索引失效,可以使用 UNION 替代;
    • LIKE 语句不允许使用 % 开头,否则索引会失效;
    • 组合索引一定要遵循 从左到右 原则,否则索引会失效;
    • 索引不宜过多,根据实际情况决定,尽量不要超过 10 个;
    • 每张表都必须有 主键,达到加快查询效率的目的;
    • 分表,可根据业务字段尾数中的个位或十位或百位(以此类推)做表名达到分表的目的;
    • 分库,可根据业务字段尾数中的个位或十位或百位(以此类推)做库名达到分库的目的;
    • 表分区,类似于硬盘分区,可以将某个时间段的数据放在分区里,加快查询速度,可以配合 分表 + 表分区 结合使用;

    #神器 EXPLAIN 语句

    EXPLAIN 显示了 MySQL 如何使用索引来处理 SELECT 语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。

    使用方法,在 SELECT 语句前加上 EXPLAIN 即可,如:

    EXPLAIN SELECT * FROM tb_item WHERE cid IN (SELECT id FROM tb_item_cat)

     

      • id: SELECT 识别符。这是 SELECT 的查询序列号
      • select_type: SELECT类型,可以为以下任何一种
      • table: 输出的行所引用的表
      • partitions: 表分区
      • type: 联接类型。下面给出各种联接类型,按照 从最佳类型到最坏类型 进行排序
      • system: 表仅有一行(=系统表)。这是 const 联接类型的一个特例。

    possible_keys:

         指出 MySQL 能使用哪个索引在该表中找到行
      • key: 显示 MySQL 实际决定使用的键(索引)。如果没有选择索引, 键是 NULL。
      • key_len: 显示 MySQL 决定使用的键长度。如果键是 NULL, 则长度为 NULL。
      • ref: 显示使用哪个列或常数与 key 一起从表中选择行。
      • rows: 显示 MySQL 认为它执行查询时必须检查的行数。多行之间的数据相乘可以估算要处理的行数。
      • filtered: 显示了通过条件过滤出的行数的百分比估计值。
      • Extra: 该列包含 MySQL 解决查询的详细信息
  • 相关阅读:
    C++ Operate FTP
    md /mdd /ml /mt/mtd
    从MySpace基于.NET平台的六次重构经历,来感受分布式系统。
    分布式缓存BeIT Memcached简介
    Asp.Net应用程序中为什么要MachineKey?如何生成MachineKey?
    马云飞机上写长贴:再一次和新同事们谈谈看法
    memcached完全剖析
    ESET ESS/EAV 5 正式版 中英文32/64位 (注册版) 下载
    Windows下的.NET+ Memcached安装
    在 ASP.NET 環境下使用 Memcached 快速上手指南
  • 原文地址:https://www.cnblogs.com/lingboweifu/p/11897931.html
Copyright © 2011-2022 走看看