小弟有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,每个数据表的结构基本上一样,但是表和表之间没有任何关系.查询的时候要把结果显示在一个页面上(就是在一个页上分页),请问有什么好的解决方案吗?

解决方案 »

  1.   

    内存表到是可以,可是别人都说用SQL 存储过程速度快,听说MS也是用的存储过程啊还有啊,我22个表,写入内存表,用户的计算机会不会卡?
      

  2.   

    sql server ???按你的思路做的话
    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%'楼主可以试验下..
      

  3.   

    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%'我还是有点不明白你这句话的意思,我的意思是22个表的字段也不一样,数据内容也多,全文吧我写入内存表用了22秒.才10万条记录那位朋友写一个例子出来看看嘛我的数据库是SQL SERVER
    WEB技术是ASP.NET 2.0
      

  4.   

    表字段不一样没关系..可以 采用别名来统一表字段名..
    这样就可以用union all了.
      

  5.   

    具体怎么做啊,而且要LIKE的的字段数也不一样.有的表是三个字段要LIKE,有的字段是2个字段要LIKE,那你说怎么办?
      

  6.   

    我还是做的全文SEARCH,速度不知道 有多慢,一共是33个表.
      

  7.   

    数据量大,多的时候,一行数据的text可能有8000个字符以上,text一般是3000个字符每个数据表都有一个text字段,所以麻烦,我以前用ACCESS,结果要25秒,用SQL只用了18秒.我知道一定有方法在2秒以内搞写,MS的数据量那么大,也才1秒多.肯定是用的"存储过程"我没做过存储过程,所以很头疼,