mysql missing index_缺少索引系统名称(Missing Index Sysname)

缺少索引系统名称(Missing Index Sysname)

当我使用SQL Server Management Studio显示查询的估计执行计划时,它有时会建议丢失索引。

我的问题是关于以下建议中的sysname - sysname是什么意思?

我通常只用CREATE NONCLUSTERED INDEX [IX_Users_Surname]替换第一行,所以我不理解sysname引用。

CREATE NONCLUSTERED INDEX []

ON [dbo].[Users] ([Surname])

INCLUDE ([UserID],[Firstname],[Email],[Password])

When I used SQL Server Management Studio to display the estimated execution plan of a query it will sometimes suggest a missing index.

My question is about the sysname in the following suggestion - What does sysname mean?

I would normally just replace the firstline with CREATE NONCLUSTERED INDEX [IX_Users_Surname] so I don't understand the sysname reference.

CREATE NONCLUSTERED INDEX []

ON [dbo].[Users] ([Surname])

INCLUDE ([UserID],[Firstname],[Email],[Password])

原文:https://stackoverflow.com/questions/11280186

更新时间:2019-11-18 19:11

最满意答案

语法用于SSMS模板替换对话框,请参阅替换模板参数 :

要使用此对话框,必须在脚本中使用尖括号(<>)括起格式为 。

因此, sysname是索引名称模板参数的类型 ,sysname是适当的类型。

The syntax is for the SSMS template replacement dialog, see Replace Template Parameters:

To use this dialog box, you must have parameters in your script enclosed in angle brackets (< >) in the format .

Therefore sysname is the type of the index name template parameter, and sysname is the appropriate type.

2012-07-01

相关问答

sysname是一种内置数据类型,限制为128个Unicode字符,IIRC主要用于在创建脚本时存储对象名称。 其值不能为NULL 它与使用nvarchar(128) NOT NULL基本相同 编辑 正如@Jim在评论中所提到的,我不认为真正有一个商业案例,你会使用sysname来说实话。 在SQL Server中构建内部sys表和存储过程等时,它主要由Microsoft使用。 例如,通过执行Exec sp_help 'sys.tables'您将看到列name被定义为sysname这是因为它的值实

...

事实证明,这个问题与Thinking Sphinx如何处理Single Table Inheritance有关。 TS仅返回具有与父类的子类对应的type记录。 如果type为NULL ,则文档不包含在搜索结果中。 我们在accounts表中有很多type=NULL 。 修复数据后,搜索现在按预期工作。 感谢#sphinxsearch中的roman3x指向我。 It turns out the issue had to do with how Thinking Sphinx handles Sin

...

如果SPSIMULATE是存储过程(而不是存储的函数),您可以尝试更改此行: cs = getDBTransaction().createCallableStatement("begin ? := SPSIMULATE(?); end;", 0);

至 cs = getDBTransaction().createCallableStatement("{call SPSIMULATE(?)}", 0);

并确保从BC Tester测试您的程序,然后从支持bean进行测试。 较小的步骤总是更

...

在Doctrine中,如果是varcahr类型,只需在模型类中执行以下操作: 假设table fieldname是FirstName /**

* @var string $firstName

* @Column(name="FirstName", type="string", length=60, nullable=false)

*/

protected $firstName;

/**

* Set the first name

*

* @param $firstName

* @r

...

它提供了一个抽象,可以保护您免受实现细节的影响。 好处是,如果定义在将来的版本中发生变化,您的代码仍然可以正常工作。 sysname曾经等同于varchar(30) 。 例如,如果SQL Server 2016允许对象标识符长度为256个字符,则无需查找和更新所有硬编码的128。 我也更喜欢使用它,因为在语义上似乎更整洁地使用该数据类型来存储对象标识符的列/变量。 It provides an abstraction that shields you from the implementation

...

sysname只是它期望的SQL数据类型。 它是type.sysname,所以本质上该命令是说请创建一个索引,缺少索引的名称将是sysname类型。 sysname数据类型用于存储对象名称的表列,变量和存储过程参数。 sysname的确切定义与标识符规则有关。 因此,它可以在SQL Server的实例之间变化。 sysname在功能上与nvarchar(128)相同,但默认情况下sysname为NOT NULL。 在早期版本的SQL Server中,sysname被定义为varchar(30)。

...

你有几个拼写错误,语法错误,最重要的是你不需要打开和关闭大括号( {} )所以尝试下面的 DECLARE

LV_CODE_TXT VARCHAR (5) := 'A';

LV_ORDERTOTAL_NUM NUMBER (6, 2) := 100;

LV_DISCOUNT_NUM NUMBER (5, 2);

BEGIN

IF LV_CODE_TXT IN ('A', 'E')

THEN

LV_DISCOUNT_NUM := L

...

它应该是: select name FROM master.sys.databases

where name = @database

原始查询将搜索名为'@database'的数据库,而不是变量@database的值。 此外,您可以删除set语句中的括号。 set @database = 'Mel'

It should be: select name FROM master.sys.databases

where name = @database

Your original query se

...

最有可能的是,查询优化器只是看到你正在选择DisplayText - 所以对于NC索引中找到的20'000行中的每一行,都需要对聚集索引进行密钥查找才能获得该数据 - 以及密钥查找是昂贵的操作! 因此,最终,立即扫描clustere索引可能会更容易,也更有效。 我打赌如果你在这里运行这个查询: select CaseActionId, Executed, ExecutedBy

from CaseActions

where Executed='2500-01-01'

然后将使用NC索引 如果你真的

...

语法用于SSMS模板替换对话框,请参阅替换模板参数 : 要使用此对话框,必须在脚本中使用尖括号(<>)括起格式为 。 因此, sysname是索引名称模板参数的类型 ,sysname是适当的类型。 The syntax is for the SSMS template replace

...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值