try:select top 10 A.ID from gbc_supply as A inner join gbc_associator as B on B.ID=A.associator where freetext(A.*,N'电脑')
修改createtime索引的排序方式为(DESC),首次查询时间还是如下:SQL Server 分析和编译时间: CPU 时间 = 15 毫秒,耗费时间 = 161 毫秒。(所影响的行数为 10 行) SQL Server 执行时间: CPU 时间 = 329 毫秒,耗费时间 = 12305 毫秒。
没有加上order by 的执行时间是很少,不到1秒但关键业务上还是需要按时间降序排列的!
而且你用了inner join ,这也会影响查询速度的!
我写掉了order by。你加上去试试吧。 inner join 是联表查询中效率最高的。
想一下....这样呢?CREATE INDEX ix_Associator_CreateTime ON gbc_supply(CreateTime,ssociator)?
select top 10 A.ID from gbc_supply as A inner join gbc_associator as B on B.ID=A.associator where freetext(A.*,N'电脑') order by A.createtime desc这样的执行时间如下: SQL Server 分析和编译时间: CPU 时间 = 16 毫秒,耗费时间 = 154 毫秒。(所影响的行数为 10 行) SQL Server 执行时间: CPU 时间 = 422 毫秒,耗费时间 = 22905 毫秒。
搞反了这样:CREATE INDEX ix_Associator_CreateTime ON gbc_supply(Associator,CreateTime)GO
恩,300w条做连接是比较耗时。那再试试这样:select top 10 ID from gbc_supply where associator in (select ID from gbc_associator) and freetext(A.*,N'电脑') order by createtime desc
上面写错了。select top 10 ID from gbc_supply where associator in (select ID from gbc_associator) and freetext(gbc_supply.*,N'电脑') order by createtime desc 还不行的话,只好建索引了。。
where freetext(A.*,'"*电脑*"')
order by A.createtime desc
去掉Order by 确实快了很多,返回时间不要1秒;
但是业务逻辑是需要按照时间来排序的,那该如何呢?执行下面语句
SELECT fulltextserviceproperty('VerifySignature')
exec sp_fulltext_service verify_signature,0
报错:过程 'sp_fulltext_service' 指定的参数或选项无效。还望各位指教!
from gbc_supply as A inner join gbc_associator as B on B.ID=A.associator
where freetext(A.*,N'电脑')
CPU 时间 = 15 毫秒,耗费时间 = 161 毫秒。(所影响的行数为 10 行)
SQL Server 执行时间:
CPU 时间 = 329 毫秒,耗费时间 = 12305 毫秒。
而且你用了inner join ,这也会影响查询速度的!
inner join 是联表查询中效率最高的。
from gbc_supply as A inner join gbc_associator as B on B.ID=A.associator
where freetext(A.*,N'电脑')
order by A.createtime desc这样的执行时间如下:
SQL Server 分析和编译时间:
CPU 时间 = 16 毫秒,耗费时间 = 154 毫秒。(所影响的行数为 10 行)
SQL Server 执行时间:
CPU 时间 = 422 毫秒,耗费时间 = 22905 毫秒。
搞反了这样:CREATE INDEX ix_Associator_CreateTime ON gbc_supply(Associator,CreateTime)GO
from gbc_supply
where associator in (select ID from gbc_associator) and freetext(A.*,N'电脑')
order by createtime desc
from gbc_supply
where associator in (select ID from gbc_associator) and freetext(gbc_supply.*,N'电脑')
order by createtime desc
还不行的话,只好建索引了。。
ID是聚集索引!
谢谢大家!