作者lottemarines (一平)
看板Database
标题Re: [SQL ] 如何改善 LIKE '%search%' 的效能?
时间Wed Jun 27 11:32:32 2007
※ 引述《zhman (闲闲的人)》之铭言:
: ※ 引述《MugenPower (无限MUGEN)》之铭言:
: 我这里提供一个简单的一般化方法,就是自己实作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,如果更新频繁的话,那你可要考量一下时间成本.
上面的方法不会很高深啊,感觉也挺有用的
例如 有人查过 「药水」 这个词
第一次作的时候是完整的做出来,并把结果另存在另一张(B)资料表里
第二次就把上次的结果从另一张资料表里拿出来
因为(B)资料表里头只有一笔,所以找起来当然比几万笔快
我相信大多数的人搜寻词顶多只有几千则
一定比全部重找来的快
另外,还可以统计哪些词被搜寻的比较多
被搜寻的少的,可以定时删掉
然後维持(B)资料表的笔数少一点,减少搜寻次数
搜寻的时候也可以在旁边列出最多人搜寻的东西
然後针对那些最多人搜寻的东西再做最佳化
我还想到一种方法,乾脆把这个功能让使用者下载然後在本机电脑上跑
这样就不用什麽都吃伺服器频宽跟运算能力
--
免费工会论坛、DKP网站、报名网站架设:
http://gameclub.twbbs.org
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.130.176.205