有300万条记录,用 like 慢的不行,使用全文索引,每次找的都不全,怎么办?
如果找不全记录,那不就没用了。Select Count(*) From [Table_Name] Where [Name] Like '%酒店%'Select Count(*) From [Table_Name] Where Contains([Name],'"*酒店*"')第一条太慢,第二条找不全。
这个问题有解吗?要怎么查才能快又准确。
头都大了。
如果找不全记录,那不就没用了。Select Count(*) From [Table_Name] Where [Name] Like '%酒店%'Select Count(*) From [Table_Name] Where Contains([Name],'"*酒店*"')第一条太慢,第二条找不全。
这个问题有解吗?要怎么查才能快又准确。
头都大了。
不是的话有索引?
你的全文索引设在哪个字段?
--------
Sql Server 2005
Name 不是主键,非聚集索引,没有索引的字段是不能 Contains 的Contains([Name],'"*酒店*"')
Contains([Name],'"酒店"')
Contains([Name],'酒店')
都可以用,还有 FreeText,反正是找不全记录。
Sql Server 2005 帮助里有这样的用法
300万条记录,你做个分类,以分类做为索引.先查分类后再查其它字段 ike .
注:使用like 条件查询,条件字段原来的索引失效。
我所说的意思是,如果单独使用like来查询300w条记录,是不可能快的了,因为在sql使用like in 等不定条件时,原来的索引是无效的;既然如此,只好另想办法
1 你的表结构增加一个大分类(应该300w条记录总有个分类吧)且索引。
2 sql 语句多增加个分类的条件,是否检索的数据量会小一点。
3 sql 语句有一条优化原则:不定条件放在前面,确定的条件放在后面。
所以:
Select Count(*) From [Table_Name] Where [Name] Like '%酒店%' 再增加个明确的分配条件或其它明确的条件
如果一个分类数据量还太大,那只好再细化子类了。
看百度也是先分类再查
新闻 网页 贴吧 知道 MP3 图片 视频
默认是网页