我应该如何提高查询效率呢?

samenzhou 2004-12-28 05:23:15
最近偶的网站老出问题,
数据库查询老出问题
问题主要集中在用查询字段属性为nvarechar类型时候
执行效率比较低下

例如
sql="select * from online where username='" & name &"'"
sql="select count(*) from reply where titleid=" & titleid

sql="select * from article,members where article.titleid=" & titleid & " and article.[user=members.loginid"


请各位大虾给点意见.
呵呵,小弟ORACLE还熟悉,就MS SQL有点生疏.
一百分如果不够,我还可以再加的.
...全文
105 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
vinsonshen 2004-12-28
  • 打赏
  • 举报
回复
使用 CHECKSUM 生成哈希索引
samenzhou 2004-12-28
  • 打赏
  • 举报
回复
您的意思是我可以在nvarchar类型的字段上添加索引么?
这些字段的相关度不高,也能作成索引么?
vinsonshen 2004-12-28
  • 打赏
  • 举报
回复
你对nvarchar字段使用哈希索引吧:

使用 CHECKSUM 生成哈希索引
CHECKSUM 函数可以用于生成哈希索引。通过将计算校验值列添加到索引的表中,然后在校验值列上生成索引来生成哈希索引。

-- Create a checksum index.
SET ARITHABORT ON
USE Northwind
GO
ALTER TABLE Products
ADD cs_Pname AS checksum(ProductName)
CREATE INDEX Pname_index ON Products (cs_Pname)

校验值索引可用作哈希索引,尤其是当要索引的列为较长的字符列时可以提高索引速度。校验值索引可用于等价搜索。

/*Use the index in a SELECT query. Add a second search
condition to catch stray cases where checksums match,
but the values are not identical.*/
SELECT *
FROM Products
WHERE checksum(N'Vegie-spread') = cs_Pname
AND ProductName = N'Vegie-spread'

iswear428 2004-12-28
  • 打赏
  • 举报
回复
没有办法啊,本来字符型搜索就比较慢
添加上索引可能会比较快一点啦
子陌红尘 2004-12-28
  • 打赏
  • 举报
回复
这些字段上建索引了没?

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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