作者zhman (闲闲的人)
看板Database
标题Re: [SQL ] 如何改善 LIKE '%search%' 的效能?
时间Mon Jun 25 10:35:33 2007
※ 引述《MugenPower (无限MUGEN)》之铭言:
: ※ 引述《statue (statue)》之铭言:
: : 没办法确定他是开头...
: : 像这种全表格的搜寻, 除了减少栏位长度有可能加快速度外,
: : 还有没有什麽方法可以加快?
: : 还是有办法让他不要全表格...
: 难怪一直觉得 S大的ID好眼熟
: 看到[怒气药水]才恍然大悟 原来是[艾大] XDDDDD
: 真是失敬失敬
: MySQL 小弟不是很熟悉
: 就小的所知道MySQL内建支援全文检索 Fulltext search
: 好像有built-in Function
: MATCH (...) AGAINST (...) 小的记得好像有些什麽限制 @@
: 建议艾大可以朝这个方向进行
: 翻翻 manual GOOGLE 一下 有不少资料
: Orz ... 对不起没帮上忙
MySQL的全文检索我想并不适合用,尤其是中文的资料,虽然网页上是讲得很好听,不过试了就知道.
如果你的资料是有特别的结构或pattern,那也许有其他更好的方法.
我这里提供一个简单的一般化方法,就是自己实作index,透过cache的方式.
1.开一个新的table,包含2个栏位:(key,id),key就是会被查询的keyword,id则是对应record的primary key.
2.每次查询就先查这个table,有资料,那很幸运,你很快就有结果了.
3.没资料,就重做你原来的like查询,再把结果insert到这个table中,下次就可以用.
基本假设是你只想知道某个keyword是存在某笔record.其他更详细的查询,则需再做其他的变化.
如果你有一些keywords,那可以预先insert一些资料,也可以增加效率.
一旦资料有做更新时,也需要一并keyword的table,如果更新频繁的话,那你可要考量一下时间成本.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.60.106.5