请问mysql加上全文索引后插入数据变慢应该如何解决

ccterran 2005-12-15 04:22:50
为了更快的搜索数据库,现在给一个表的两个字段加上全文索引(一个varchar,一个text),结果发现插入数据时特慢,原来的表里只有几百条数据,再插入时也要5秒钟左右。

请问这要如何解决呢?
...全文
830 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
XqYuan 2005-12-19
  • 打赏
  • 举报
回复
不如用别的工具建索引,使建索引和插入修改数据分开处理,那样新插入的数据不能立即搜出来,要有一段缓冲时间,但是效率好很多
XqYuan 2005-12-19
  • 打赏
  • 举报
回复
数据库建全文检索如果数据量大的话,效率肯定会很低
TigerHu 2005-12-19
  • 打赏
  • 举报
回复
gz
ccterran 2005-12-19
  • 打赏
  • 举报
回复
我不想设置stopword,因为要屏蔽的词语很少。。。

hy2003fly 2005-12-16
  • 打赏
  • 举报
回复
一般来说都是将所有的数据放到表里再建fulltext的,搜索起来才会快,如果在有fulltext的表再插入数据会变得非常慢,另外fulltext对于在的表能很好地工作,小表没有足够的数据值来进行优化操作。
  你的问题有两种解决方法:一是用drop index indexname on tablename;将fulltext index删除后,再将要插入数据插入表,最后才建fulltext index;
二是将所有的数据移植到一个没有fulltext index的表中,再建fulltext index.
  

ccterran 2005-12-16
  • 打赏
  • 举报
回复
有人有办法吗
hy2003fly 2005-12-16
  • 打赏
  • 举报
回复
http://dev.mysql.com/doc/refman/4.1/en/fulltext-search.html
这里有用户使用fulltext的经验,你去看看吧,肯定对你有益处,里面也提到非英文的fulltext要设置一个“stopword”
引文如下:
- If indexing text that is in other language than english, before doing anything create a stopword file for your language! (That could reduce index size about 30%)
hy2003fly 2005-12-16
  • 打赏
  • 举报
回复
既然你每天都有4万条记录更新,那你就不要想通过fulltext来提高搜索速度啦。你说一个4万条记录的表建fulltext index花了两个小时还没有结束?我没有那么多的数据,做不了测试,我觉得应该是有什么进程占用了资源,要不然没有任何理由2个小时还建不了一个索引。
ccterran 2005-12-16
  • 打赏
  • 举报
回复
上面这位兄弟说的还是不行,因为
1,数据是不断在更新的,现在每天至少一万的数据量,不可能每次都要重建索引
2,我试过建索引也是特慢的。一个只有4万数据的表,新建fulltext索引,两个小时过去之后,还在执行,我只好把它停掉了,然后再一个一个导入。

57,062

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧