SQL优化之Change语句

INSERT优化

插入行所需的时间由以下因素决定,其中数字表示近似比例:

  • 连接:(3)
  • 向服务器发送查询:(2)
  • 解析查询:(2)
  • 插入行:(1×行大小)
  • 插入索引:(1×索引数)
  • 断开连接:(1)

您可以使用以下方法来加快插入速度:

  • 如果要同时从同一客户端插入许多行,请使用INSERT具有多个VALUES列表的语句一次插入几行。这比使用单独的单行INSERT 语句要快得多(某些情况下要快很多倍)。

  • 从文本文件加载表格时,请使用 LOAD DATA。这通常比使用INSERT语句快20倍 。

  • 利用列的默认值。仅当要插入的值与默认值不同时才明确插入值。这减少了MySQL必须执行的解析,并提高了插入速度。

  • 索引数量越少,插入数据速度越快。要在查询性能和插入性能之间平衡好,索引的数量至关重要。

UPDATE优化

写入速度取决于要更新的数据量和要更新的索引数。不会更新未更改的索引。

获取快速更新的另一种方法是延迟更新,然后在以后连续执行多个更新。如果锁定表,一起执行多个更新比一次执行一个更新快得多。

对于使用动态行格式(如text,varchar等)的MyISAM表,将行更新为更长的总长度可能会拆分该行。如果您经常这样做,那么偶尔使用OPTIMIZE TABLE非常重要 。

DELETE优化

要从MyISAM表中删除所有行,TRUNCATE table tbl_name 比 delete from tbl_name快。Truncate操作不是事务安全的;在活动事务或活动表锁过程中尝试执行某个操作时会报错。

发布了10 篇原创文章 · 获赞 36 · 访问量 9410

猜你喜欢

转载自blog.csdn.net/qq_36011946/article/details/104898749
今日推荐