这两种表的设计,在查询速度上有分别吗?

Ylwo 2005-06-18 12:58:46
SQL Server 全文索引主要查询Namea和Nameb列。 用方案二的速度会快些吗?

方案一:
只用一张表
ID nvarchar(16)
Namea nvarchar(50)
Nameb nvarchar(50)
Info nvarchar(1000)

方案二:
将数据分开用两张表
table1
ID nvarchar(16)
Namea nvarchar(50)
Nameb nvarchar(50)

table2
ID nvarchar(16)
Info nvarchar(1000)
...全文
98 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
超级大笨狼 2005-06-18
  • 打赏
  • 举报
回复
躁声字文件

C:\Program Files\Microsoft SQL Server\MSSQL\FTDATA\SQLServer\Config\noise.chs

我参考别人的做法,只保留了一个?号。

还有数据库默认语言排序规则设置成Chinese_PRC_CI_AS



不要忘记建立一个作业,定时(一般可以每天)为全文检索添加记录。
exec sp_fulltext_table 'Answer_Total', 'start_full'

exec sp_fulltext_table 'Question_Total', 'start_full'
-- 填充全文检索记录。

超级大笨狼 2005-06-18
  • 打赏
  • 举报
回复
大家可能都会用
select * from tb where field like '%关键字%'
但是一旦数据量大用户多,就会造成查询过慢,因此MS提供一种牺牲空间来换取时间的解决方案。
全文检索。原文请看
http://www.microsoft.com/china/msdn/archives/library/dnsql2k/html/sql_fulltextsearch.asp
我对自己的实现加了些注释:

use PopAsk
--使用这个库

exec sp_fulltext_database 'enable'
--使这个库允许全文检索


-----以下对Question_Total表操作------
/*
首先:要为全文检索目录起个名字,比如Q_ID_Desc
然后:要确保你这个表必须有个唯一主键,比如我这个Question_Total表,主键名是:PK_Question_Total
剩下就把要检索的列加进去就可以了。
*/
exec sp_fulltext_catalog 'Q_ID_Desc', 'create'
--创建名为Q_ID_Desc的全文检索目录,默认位置。

exec sp_fulltext_table 'Question_Total', 'create', 'Q_ID_Desc', 'PK_Question_Total'
-- 把Question_Total这个表,创建到全文检索目录中,指定主键。

exec sp_fulltext_column 'Question_Total', 'Title', 'add'
-- 把Question_Total这个表,要检索的Title列,添加到全文检索中。

exec sp_fulltext_column 'Question_Total', 'Content', 'add'
-- 把Question_Total这个表,要检索的Content列,添加到全文检索中。

exec sp_fulltext_table 'Question_Total', 'start_full'
-- 填充全文检索记录。

select FULLTEXTCATALOGPROPERTY('Q_ID_Desc', 'Populatestatus')
-- 这句可以不用,是检测是否添完状态的,1代表正在进行,0代表完成。

-----以下对另外一个表Answer_Total操作------
exec sp_fulltext_catalog 'A_ID_Desc', 'create'
--创建名为A_ID_Desc的全文检索目录,默认位置。

exec sp_fulltext_table 'Answer_Total', 'create', 'A_ID_Desc', 'PK_Answer_Total'
-- 把Question_Total这个表,创建到全文检索目录中,指定主键。


exec sp_fulltext_column 'Answer_Total', 'Answer_Content', 'add'
-- 把Answer_Total这个表,要检索的Answer_Content列,添加到全文检索中。

exec sp_fulltext_table 'Answer_Total', 'start_full'
-- 填充全文检索记录。

select FULLTEXTCATALOGPROPERTY('A_ID_Desc', 'Populatestatus')
-- 这句可以不用,是检测是否添完状态的,1代表正在进行,0代表完成。

/*
执行下列语句用于检索。
SELECT *
FROM FREETEXTTABLE(Question_Total, title, '测试')

SELECT *
FROM FREETEXTTABLE(Answer_Total, Answer_Content, '测试')
*/


lovexiuxiu 2005-06-18
  • 打赏
  • 举报
回复
mark
超级大笨狼 2005-06-18
  • 打赏
  • 举报
回复
fulltext采用job检索,分表于否速度上不用考虑太多。
但是你用nvarchar(16)
做主键,性能一定下降,还是用int 自增吧。

uxen 2005-06-18
  • 打赏
  • 举报
回复
有合适的索引,并且select语句指定了查询字段的话,我认为不会有什么区别,除非你写select *
考虑碳交易机制的园区综合能源系统电热协同运行优化研究(Matlab代码实现)内容概要:本文围绕考虑碳交易机制的园区综合能源系统电热协同运行优化展开研究,旨在通过构建优化模型提升系统运行的经济性与低碳性。研究以园区内的电、热等多种能源形式为对象,结合碳交易政策,建立了电热协同优化调度模型,并采用Matlab进行仿真求解,分析不同情景下系统的运行成本与碳排放变化。通过引入碳交易机制,量化碳排放权的经济价值,推动能源系统的清洁化运行,同时兼顾用户用能需求与能源供给效率,实现环境效益与经济效益的统一。; 适合人群:具备一定电力系统、能源系统或运筹优化背景,从事相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于园区级综合能源系统的规划设计与运行管理,优化电热联合调度策略;②为实施碳交易政策下的能源系统低碳转型提供决策支持与仿真工具;③支撑学术研究中对多能协同、碳排放建模与优化算法集成的学习与复现。; 阅读建议:建议结合Matlab代码深入理解模型构建与求解过程,重点关注目标函数中碳交易成本项的设置及约束条件的处理方式,同时可对比无碳交易情景进行敏感性分析,以全面掌握碳政策对系统运行的影响机制。

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧