日期:2014-05-18  浏览次数:20942 次

使用全文索引查询不到记录,怎么办?
有300万条记录,用 like 慢的不行,使用全文索引,每次找的都不全,怎么办?
如果找不全记录,那不就没用了。

Select Count(*) From [Table_Name] Where [Name] Like '%酒店%'

Select Count(*) From [Table_Name] Where Contains([Name],'"*酒店*"')

第一条太慢,第二条找不全。
这个问题有解吗?要怎么查才能快又准确。
头都大了。

------解决方案--------------------
Name是主键?
不是的话有索引?
你的全文索引设在哪个字段?
------解决方案--------------------
什么数据库啊?sql2k 的话300w条记录也不会很慢啊.
------解决方案--------------------
好奇?你用的是什么数据库呢?Contains([Name],'"*酒店*"')?
------解决方案--------------------
没办法,只能这样了。
300万条记录,你做个分类,以分类做为索引.先查分类后再查其它字段 ike .
注:使用like 条件查询,条件字段原来的索引失效。
------解决方案--------------------
这好象是一普遍存在的一个问题。

楼下的会用全文索引吗?
------解决方案--------------------
全文索引怎么都没人理。都不用吗?
要是查询的数据很多怎么办?
普通的索引怎么面对模糊查询?
------解决方案--------------------
没用过"非聚集索引"..

帮顶了...顺便学习
------解决方案--------------------
重新填充
------解决方案--------------------
试试

Select Count(Table_Name表的主键) From [Table_Name] Where [Name] Like '%酒店%' 

------解决方案--------------------
帮顶
------解决方案--------------------
关注一下!看看高手的解答
------解决方案--------------------
看看,期待解决的好办法
------解决方案--------------------
全文索引有个单字或词的匹配权重问题,要实现象LIKE那样的功能,速度又要快,似乎很难。。。
------解决方案--------------------
去 MS-SQL Server 问。
------解决方案--------------------
sql的优化
我所说的意思是,如果单独使用like来查询300w条记录,是不可能快的了,因为在sql使用like in 等不定条件时,原来的索引是无效的;既然如此,只好另想办法
1 你的表结构增加一个大分类(应该300w条记录总有个分类吧)且索引。
2 sql 语句多增加个分类的条件,是否检索的数据量会小一点。
3 sql 语句有一条优化原则:不定条件放在前面,确定的条件放在后面。
所以:
Select Count(*) From [Table_Name] Where [Name] Like '%酒店%' 再增加个明确的分配条件或其它明确的条件
如果一个分类数据量还太大,那只好再细化子类了。
看百度也是先分类再查
 新闻 网页 贴吧 知道 MP3 图片 视频
默认是网页
------解决方案--------------------
仅仅靠sql语句是无法实现更好的优化。可以参考一下 Lucene .net