小弟有22个表,要做一个全文查询.
主要功能是这样的,比如用户输入一个关键字"keyword"
那么就要在这些表中找出包含"keyword"的数据行,数据表的格式如下table1
title,content,datetable2
title,type,content,othertable3
.......我的解决方案是这样的,但是速度慢死人
execute=Select * From table1 where title like'%keyword%' or content like'%keyword%'
for i as integer=0 to ResultsTable.Rows.Count()-1
'把这些数据通通放入一个表
next i .......每一个都放入一个表,最后查询这个表.
一直到TABLE22,每个数据表的结构基本上一样,但是表和表之间没有任何关系.查询的时候要把结果显示在一个页面上(就是在一个页上分页),请问有什么好的解决方案吗?
主要功能是这样的,比如用户输入一个关键字"keyword"
那么就要在这些表中找出包含"keyword"的数据行,数据表的格式如下table1
title,content,datetable2
title,type,content,othertable3
.......我的解决方案是这样的,但是速度慢死人
execute=Select * From table1 where title like'%keyword%' or content like'%keyword%'
for i as integer=0 to ResultsTable.Rows.Count()-1
'把这些数据通通放入一个表
next i .......每一个都放入一个表,最后查询这个表.
一直到TABLE22,每个数据表的结构基本上一样,但是表和表之间没有任何关系.查询的时候要把结果显示在一个页面上(就是在一个页上分页),请问有什么好的解决方案吗?
1.你不需要将所有的数据都检索出来的吧?只需要检索出id,title,content三个字段就可以了,还可以加一个标识符表示是哪张表的.因为用*来检索的话效率会比价低
2.如果你是sql server的话可以通过存储过程来实现,只需要传如keyword到存储过程中,其余的操作都在存储过程中来完成,并给表建全文索引(如果每个表的数据很庞大的话就不要建全文索引了,因为本身建下的话就很耗时,不过建好后的效果会很好)
是否可以 按 union all来联合表进行匹配如
select id from
(select id,title,content from tablename1 union all
select id,title,content from tablename2 union all
...
select id,title,content from tablename22) a where title like '%keyword%' or content like '%keyword%'楼主可以试验下..
...select id,title,content from tablename22) a where title like '%keyword%' or content like '%keyword%'我还是有点不明白你这句话的意思,我的意思是22个表的字段也不一样,数据内容也多,全文吧我写入内存表用了22秒.才10万条记录那位朋友写一个例子出来看看嘛我的数据库是SQL SERVER
WEB技术是ASP.NET 2.0
这样就可以用union all了.