相关疑难解决方法(0)

我可以在MySQL中使用参数创建视图吗?

我有这样的观点:

CREATE VIEW MyView AS
   SELECT Column FROM Table WHERE Value = 2;
Run Code Online (Sandbox Code Playgroud)

我想让它更通用,它意味着将2变为变量.我试过这个:

CREATE VIEW MyView AS
   SELECT Column FROM Table WHERE Value = @MyVariable;
Run Code Online (Sandbox Code Playgroud)

但MySQL不允许这样做.

我找到了一个丑陋的解决方法:

CREATE FUNCTION GetMyVariable() RETURNS INTEGER DETERMINISTIC NO SQL
BEGIN RETURN @MyVariable; END|
Run Code Online (Sandbox Code Playgroud)

然后观点是:

CREATE VIEW MyView AS
   SELECT Column FROM Table WHERE Value = GetMyVariable();
Run Code Online (Sandbox Code Playgroud)

但它看起来很糟糕,而且用法也很糟糕 - 我必须在每次使用视图之前设置@MyVariable.

有没有解决方案,我可以像这样使用:

SELECT Column FROM MyView(2) WHERE (...)
Run Code Online (Sandbox Code Playgroud)

具体情况如下:我有一个表存储有关被拒绝请求的信息:

CREATE TABLE Denial
(
    Id INTEGER UNSIGNED AUTO_INCREMENT,
        PRIMARY KEY(Id),
    DateTime DATETIME NOT NULL,
    FeatureId MEDIUMINT …
Run Code Online (Sandbox Code Playgroud)

mysql parameters stored-procedures view

85
推荐指数
3
解决办法
11万
查看次数

为什么EF为simle查询生成子查询?

有一个简单的Linq到EF:

var query = from p in _db.Posts
            where p.BlogtId == blogId
            select p;
Run Code Online (Sandbox Code Playgroud)

它以这种形式生成SQL:

SELECT
`Extent1`.`PostId`, 
`Extent1`.`BlogId`, 
...
FROM `Posts` AS `Extent1`
 WHERE `Extent1`.`BlogId` = @p__linq__0
Run Code Online (Sandbox Code Playgroud)

但是当我向此查询添加订单时

var query = from p in _db.Posts
            where p.BlogId == blogId
            orderby p.PublishDate
            select p;
Run Code Online (Sandbox Code Playgroud)

它会生成此查询

SELECT
`Project1`.`PostId`, 
`Project1`.`BlogId`, 
...
FROM (SELECT
`Extent1`.`PostId`, 
`Extent1`.`BlogId`, 
...
FROM `Posts` AS `Extent1`
 WHERE `Extent1`.`BlogId` = @p__linq__0) AS `Project1`
 ORDER BY 
`Project1`.`PublishDate` ASC
Run Code Online (Sandbox Code Playgroud)

为什么会生成子查询?MySQL中的此查询存在性能问题.MySQL正在尝试执行内部查询,该查询将数据库中的所有记录拉回,然后尝试对主题进行排序.

我需要一个解决方案来生成linq下面的sql

SELECT
`Extent1`.`PostId`, 
...
FROM `Posts` AS `Extent1`
 WHERE `Extent1`.`BlogId` = @p__linq__0 …
Run Code Online (Sandbox Code Playgroud)

mysql linq entity-framework

5
推荐指数
1
解决办法
868
查看次数