【问题标题】:Sql Select Query TimeoutSql 选择查询超时
【发布时间】:2016-11-05 18:18:41
【问题描述】:

大家好,我正在处理一个查询,一切正常,除非我运行查询超过 2-3 次,此返回超时是我的查询有问题,或者这是服务器错误,请建议我在这里我的查询

SELECT   
    Category_Feature_Mapping.Feature_ID,
    Category_Feature_Mapping.Category_ID, 
    Option_Table.Option_ID,  
    Option_Table.Title, 
    Feature_Table.Title AS featuretitle, 
    Feature_Table.Type
FROM 
    Category_Feature_Mapping 
    INNER JOIN Feature_Table 
        ON Category_Feature_Mapping.Feature_ID = Feature_Table.Feature_ID
    INNER JOIN Option_Table 
        ON Feature_Table.Feature_ID = Option_Table.Feature_ID 
WHERE 
    Category_Feature_Mapping.Category_ID = @catid
    AND Feature_Table.Feature_ID=@feid
    AND Feature_Table.Feature_ID not in (SELECT
                                             Feature_ID 
                                         FROM
                                             Vendor_Value_Table 
                                         WHERE
                                             Vendor_ID=@venid)                       
GROUP BY
    Category_Feature_Mapping.Feature_ID,
    Category_Feature_Mapping.Category_ID, 
    Option_Table.Option_ID, 
    Option_Table.Title, 
    Feature_Table.Title,
    Feature_Table.Type

【问题讨论】:

  • 如何执行查询? SSMS? C#?
  • 我用c#执行
  • 连接超时默认为 30 秒。 stackoverflow.com/questions/4308417/…
  • 查看查询计划,看看是什么阻碍了它。您可能遇到了锁定问题。
  • @dudu markvoitz 为什么我应该增加超时查询返回的项目不超过 50 项,基本上增加超时是坏习惯,我认为请提出其他建议。

标签: sql sql-server tsql sql-server-2012


【解决方案1】:

尝试将“;Connection Timeout=100”附加到您的连接字符串以延长您的超时时间

【讨论】:

  • 但是你不觉得在数据不超过50的情况下增加连接超时是个坏习惯吗?
  • 可能某时一张桌子被锁住了,如果你在 iseries 上试试 wrkobjlck
  • 我认为表在更新期间被锁定,我只是选择数据集
【解决方案2】:

可能由于性能问题,尝试将“not in”替换为“not exists”这样

 AND not exists (
 SELECT * FROM Vendor_Value_Table vvt
 WHERE Feature_Table.Feature_ID =vvt.Feature_ID and vvt.Vendor_ID=@venid
 )     

【讨论】:

  • 修改后问题存在
  • 你的表是用 id 索引的吗?
  • 你能把你的连接字符串放上来
猜你喜欢
  • 2012-10-16
  • 1970-01-01
  • 2017-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-28
相关资源
最近更新 更多