Php 索引列但保持插入速度

Php 索引列但保持插入速度,php,mysql,Php,Mysql,我需要索引我的一个表中的大多数列,因为它正被使用大量过滤器的用户用于日志搜索 这个表每秒大约有2-3个插入。我知道索引会影响表上的插入,所以这会是一个问题吗 我正在使用最新版本的MySQL(?)和PHP5 谢谢。我所能建议的就是尝试一下,看看它如何影响性能。确保只索引将在搜索中使用的列,并且在“有意义”的情况下只在索引中包含多个列-请记住,为了使索引可用,必须在WHERE、JOIN…ON子句中引用第一列,或ORDER BY-除非满足此条件,否则不会使用索引中提到的任何后面的列。我建议您尝试一下,

我需要索引我的一个表中的大多数列,因为它正被使用大量过滤器的用户用于日志搜索

这个表每秒大约有2-3个插入。我知道索引会影响表上的插入,所以这会是一个问题吗

我正在使用最新版本的MySQL(?)和PHP5


谢谢。

我所能建议的就是尝试一下,看看它如何影响性能。确保只索引将在搜索中使用的列,并且在“有意义”的情况下只在索引中包含多个列-请记住,为了使索引可用,必须在WHERE、JOIN…ON子句中引用第一列,或ORDER BY-除非满足此条件,否则不会使用索引中提到的任何后面的列。

我建议您尝试一下,看看它如何影响性能。确保只索引将在搜索中使用的列,并且在“有意义”的情况下只在索引中包含多个列-请记住,为了使索引可用,必须在WHERE、JOIN…ON子句中引用第一列,或ORDER BY-除非满足此条件,否则不会使用索引中提到的任何后面的列。

有一些技巧可用于加快插入速度

索引定义

  • 使用整数自动递增列作为主键
  • 避免使用唯一键
  • 如果没有必要,请避免使用外键
  • 如果必须使用外键,则仅对外键使用整数字段
  • 对于文本/字符串列
  • 不要使用多列键
  • 以美国为例;如果有1000000行,但只有5个唯一的值,那么使用一个键没有多大意义,完整表扫描会更快
  • 插入

  • 捆绑您的插入如果可能,在一条语句中插入5行要比执行5个单独的插入快得多,因此,如果您可以将日志存储在非索引临时表中5分钟,然后执行插入选择,将从中选择到索引表中,您将获得很大的速度
  • 使用
  • 您可以在大容量插入之前禁用索引更新,然后启用索引更新。在大容量插入和
    更改表之前执行一次更改。。。批量插入后启用键
    。这将延迟所有非唯一索引的更新,直到完成所有插入操作
  • 考虑使用;这是MySQL最快的插入机制 维护

  • 在您的表格上使用,检查统计数据并寻找改进机会
  • 定期在MyISAM、InnoDB和Archive表上运行
  • 发动机的选择

  • 测试使用MyISAM作为存储引擎是否会提高性能
  • ,测试它是否对您更有效。存档只允许一个主索引,所以对您来说这不是一个选项
  • 请在SO上查看以下问题的答案:



    有一些技巧可以用来加快插入速度

    索引定义

  • 使用整数自动递增列作为主键
  • 避免使用唯一键
  • 如果没有必要,请避免使用外键
  • 如果必须使用外键,则仅对外键使用整数字段
  • 对于文本/字符串列
  • 不要使用多列键
  • 以美国为例;如果有1000000行,但只有5个唯一的值,那么使用一个键没有多大意义,完整表扫描会更快
  • 插入

  • 捆绑您的插入如果可能,在一条语句中插入5行要比执行5个单独的插入快得多,因此,如果您可以将日志存储在非索引临时表中5分钟,然后执行插入选择,将从中选择到索引表中,您将获得很大的速度
  • 使用
  • 您可以在大容量插入之前禁用索引更新,然后启用索引更新。在大容量插入和
    更改表之前执行一次更改。。。批量插入后启用键
    。这将延迟所有非唯一索引的更新,直到完成所有插入操作
  • 考虑使用;这是MySQL最快的插入机制 维护

  • 在您的表格上使用,检查统计数据并寻找改进机会
  • 定期在MyISAM、InnoDB和Archive表上运行
  • 发动机的选择

  • 测试使用MyISAM作为存储引擎是否会提高性能
  • ,测试它是否对您更有效。存档只允许一个主索引,所以对您来说这不是一个选项
  • 请在SO上查看以下问题的答案:



    如果每秒只有2-3次插入,索引就不会有问题(除非有全文索引)。

    如果每秒只有2-3次插入,索引就不会有问题(除非有全文索引)。

    对不起,
    第一列是什么意思?我将只索引Where/order by中使用的列,如果这是您的意思的话?我认为will指的是使用复合或多列indexes@Mark,@Webnoob-是的,就是这样。我看到过一些新加入数据库的人认为索引中字段的顺序无关紧要的例子。对不起,你说的第一列是什么意思?我将只索引Where/order by中使用的列,如果这是您的意思的话?我认为will指的是使用复合或多列indexes@Mark,@Webnoob-是的,就是这样。我看到过一些数据库新手假设索引中字段的顺序无关紧要的例子。最新的MySQL是什么?5.0, 5.1, 5.5, 5.6? 哪个存储引擎MyISAM、InnoDB、Archive。顺便说一句,我建议使用黑洞存储,非常快速的插入:-)最新的MySQL什么?5.0, 5.1,