在MySQL LongText字段中搜索字符串的“正确”方法?

时间:2012-02-10 11:56:05

标签: mysql

我正在研究Nagios插件来监控我们的rsyslog服务器,后者已经后端存入MySQL数据库。该插件通过生成唯一字符串,将其发送到syslog,然后查询MySQL DB以获取唯一字符串来进行操作,从而证明该服务正确接收和存储消息。

不出所料,这个表很大(大约350万行,磁盘上2.1GB),以及InnoDB格式。保存syslog消息的列的类型为LONGTEXT。

我目前正在发送以下表单的查询:

SELECT count(*) FROM allremote WHERE message LIKE '%check_rsyslogdb_1328869942%';

在这种情况下,check_rsyslogdb_1328869942是插件记录的唯一字符串。

我是否有更有效的方法来处理此查询?

我查看了FULLTEXT索引,但它们只是MyISAM,作为​​一项策略我们避免使用MyISAM,因为它显然是次等的。

1 个答案:

答案 0 :(得分:0)

事实证明,因为我使用MySQL 5. *我不需要使用LONGTEXT,我可以使用VARCHAR(2048)代替。这让我可以创建一个普通的索引,因为我知道确切的消息,只要我在末尾添加一个额外的尾随空格(不确定它来自哪里),我就可以不使用%s。