我正在尝试使用SELECT子句中的子查询执行简单的选择查询,并且根本没有找到方法来执行此操作.我已尝试使用DQL和QueryBuilder,但都不起作用.代码如下,请不要说我只能使用连接,这是一个简单的例子,只是为了说明问题,我有合理的子查询用例.
// With QueryBuilder
$query = $qb->select(array('a',
'(SELECT at.addresstypeName
FROM e:Addresstype at
WHERE at.addresstypeId = a.addresstypeId
) AS addresstypeName'))
->from('e:Address', 'a')
->where('a.addressId = :addressId')
->setParameter('addressId', 1);
// With DQL
$dql = "SELECT a,
(SELECT at.addresstypeName
FROM e:Addresstype at
WHERE at.addresstypeId = a.addresstypeId
) AS addresstypeName
FROM e:Address a
WHERE a.addressId = :addressId";
$query = $em->createQuery($dql)->setParameter(':addressId', 1);
Run Code Online (Sandbox Code Playgroud)
地址表中定义了以下关系:
/**
* @ORM\ManyToOne(targetEntity="Addresstype")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="addresstype_id", referencedColumnName="addresstype_id")
* })
*/
protected $addresstype;
Run Code Online (Sandbox Code Playgroud)
在本机SQL中,查询将如下所示:
SELECT
a.*,
(
SELECT at.addresstype_name
FROM addresstype at
WHERE …Run Code Online (Sandbox Code Playgroud) 以下代码按预期工作(假设存在变量):
$connectionInfo = ['Database'=>$dbName, 'UID'=>$username, 'PWD'=>$pwd, 'ReturnDatesAsStrings'=>true, 'CharacterSet'=>'UTF-8'];
$conn = sqlsrv_connect($server, $connectionInfo);
$select = sqlsrv_query($conn, 'SELECT * INTO #mytable_temp FROM mytable WHERE myfield = \'myvalue\'', []);
$select2 = sqlsrv_query($conn, 'SELECT * FROM #mytable_temp ', []);
if (!$select2) {
$errors = sqlsrv_errors();
var_dump($errors);
} else {
$res = sqlsrv_fetch_array($select2, SQLSRV_FETCH_ASSOC);
var_dump($res);
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我将$ select更改为以下内容,则不起作用:
$select = sqlsrv_query($conn, 'SELECT * INTO #mytable_temp FROM mytable WHERE myfield = ?', ['myvalue']);
Run Code Online (Sandbox Code Playgroud)
运行第二个语句"无效的对象名称'#mytable_temp"时出错.为什么使用参数绑定会导致临时表不可见?
我知道如果我在同一个sqlsrv_query()语句中包含这两个语句,我可以使它工作,但这不是我的用例的选项.如果使用全局(## mytable_temp)表,我也知道它有效,但这也不是一个选项.
我正在运行PHP 5.4.12并尝试了SQL Server 11.0.3(2012 SP1)和10.50.4000(2008 SP2)上的代码.
我正在尝试使用Zend Framework 2进行这样的查询:
SELECT count(*) as num FROM mytable
Run Code Online (Sandbox Code Playgroud)
这是我用来构建select语句的代码(记住我已经导入了必要的类):
$select = new Select();
$select->from('mytable')
->columns(array('num'=>'count(*)'), false);
Run Code Online (Sandbox Code Playgroud)
此代码不起作用,因为生成的查询如下:
SELECT [count(*)] AS [num] FROM [mytable]
Run Code Online (Sandbox Code Playgroud)
...抛出以下错误:
Invalid column name 'count(*)'
Run Code Online (Sandbox Code Playgroud)
这是由count(*)周围的方括号引起的.我怎样才能使它正常工作,基本上在SQL中使用count(*)而不是[count(*)].另外,我知道你可以只使用常规查询来完成它,但是我需要这个来处理Select对象.据我所知,这曾经与之前版本的Zend一起使用,我已经看到了很多解决方案,但Zend Framework 2没有.
我正在尝试使用包System.IdentityModel.Tokens.Jwt来生成令牌.我在网上发现了一些代码示例,非常简单,但后来我遇到了一个我无法弄清楚的错误.这是我正在使用的代码(为简洁起见略有修改):
<%@ Application Language="C#" %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Text" %>
<%@ Import Namespace="System.Reflection" %>
<%@ Import Namespace="System.Collections" %>
<%@ Import Namespace="System.IdentityModel.Tokens" %>
<%@ Import Namespace="System.IdentityModel.Tokens.Jwt" %>
<%@ Import Namespace="System.Security.Claims" %>
<%@ Import Namespace="System.IdentityModel.Protocols.WSTrust" %>
<script runat="server">
public class TestClass
{
public static string GetJwtToken()
{
var tokenHandler = new JwtSecurityTokenHandler();
var input = "anyoldrandomtext";
var securityKey = new byte[input.Length * sizeof(char)];
Buffer.BlockCopy(input.ToCharArray(), 0, securityKey, 0, securityKey.Length);
var now = DateTime.UtcNow;
var tokenDescriptor = new SecurityTokenDescriptor
{
Subject …Run Code Online (Sandbox Code Playgroud) 我有你的平均PHP应用程序(在Windows服务器上运行)与表单和数据网格/列表,其中一些需要运行相当复杂的查询,我已经优化到最大,我怀疑有很多可以做到使他们跑得快得多.在给定依赖于结构的其他进程的情况下,我也没有更改数据库结构的选项.因此,由于缓存在应用程序中并未真正使用太多,这似乎是下一个合乎逻辑的步骤.
我最近阅读了代际缓存,并提出了一个可靠的机制来自动缓存我的应用程序中的查询.我现在的问题是,我遇到了两个似乎都是逻辑选择的选项的大小限制.WinCache限制你总共85MB,这不会削减它,memcached限制一个项目为1MB,如果你有一个返回相当多的记录并且有很多的查询,这似乎不是很多的领域.好吧,确切地说,似乎memcached现在允许你设置一个更大的尺寸,但事实上它默认为1MB并且过去只允许这让我质疑我正在尝试做什么.
我的网格允许一次返回的最大记录数是1000条记录,因此这是可以存储在缓存中的最大记录数(当然,每条记录的字段会有所不同).我知道大量的用户可能意味着缓存会很快填满,但是并发用户的数量通常不是很大,而且从我读到的内容来看,如果memcached内存不足,它就会摆脱最老的用户缓存项目,所以我没有看到存储较大数据集的重大缺点,除非操作非常昂贵,但从我所看到的情况来看似乎并非如此.
总而言之,我想知道的是,如果在memcached中存储更大的数据集是一个坏主意(并且被授予,我知道我不想在其中存储具有一百万条记录的查询).如果这是一个坏主意,在检索这些数据集时,什么是缓存/提高性能的好方法?
我的场景是我在控制器中创建一个render()函数(而不是与React相关),以通过指定布局来呈现视图.这样我可以有多个不同的布局组件,都接受内容属性,可以以简单的方式呈现.这就是我想简单地做的事情:
render: function(content, layout) {
layout = layout || <Layout />;
layout.setProps({ content: content });
React.render(layout, document.body);
}
Run Code Online (Sandbox Code Playgroud)
可以吗?或者如果您认为可以做到但这是一个坏主意,请告诉我原因.
在CF-10上使用服务器监控,我注意到我公司的一个测试服务器上有一个奇怪的行为.这是JVM在服务器上的内存使用情况的屏幕截图,CF网站上根本没有发生任何事情,没有任何流量
.
正如您所看到的,使用的内存会稳定上升,直到GC启动(我假设)并将使用过的内存恢复,然后重复该过程.这会指向某种内存泄漏吗?
我的用例如下:我需要能够以这样的方式安排SQS消息,即可以在特定日期/时间将定期消息添加到队列中,并且还可以根据需要定期添加.
在实现级别,我基本上要做的是有一些我可以调用的函数,我传递SQS队列,消息和调度我想让它运行,而不必构建实际的调度程序逻辑.
我没有在AWS本身看到任何似乎允许的内容,我也没有得到Lambda函数完全按照我需要做的事情,除非我遗漏了什么.
是否有任何其他第三方云服务用于我应该研究的预定流程,或者我最好只是在AWS上运行一个调度机器并且有一些REST API可以添加cron作业/ windows计划任务到它将处理SQS消息的调度?
这类似于我最近发布的一个问题,其中 COPY 命令为大型数据集挂起。在那种情况下,这是由于外键约束。但在这种情况下,我正在创建一个索引,所以我认为 FK 不会成为问题,即使我仍然禁用了表上的触发器以防万一。我试图btree index在一个有 100 亿行的表上添加一个常规。该索引位于两个int字段上。我尝试运行它并且它永远运行,所以我认为它可能太慢了,我增加到max_parallel_maintenance_workers8 和maintenance_work_mem2047MB(我在 Windows 上,所以它是最大值)。
那时,事情似乎进展得更快了,但同样的问题发生了:我可以看到文件pgsql_tmp/pgsql_tmpxxxx.x.sharedfileset夹中的文件在增长,直到它们停止但索引创建似乎从未完成。
我想知道我是否出于某种原因设置了太多工人,所以我尝试将其设置为 4,同样的问题。文件最后一次修改是在凌晨 3 点 20 分左右,现在是早上 7 点 35 分,它仍在运行。文件夹中的文件为 261GB,与表大小相比看起来差不多,每次我运行该进程时它都会以该大小停止,所以我假设它已经创建了索引,我只是不知道它可能在做什么这一点。万一重要,该表在另一个有 10 亿条记录的表上有一个外键,但表上的触发器被禁用,这对我在表中加载数据很有用。我检查了锁,没有,它不等待任何锁,这是有道理的,因为这是一个测试数据库,其中包含我为测试某些事情而创建的虚拟数据,
php ×3
amazon-sqs ×1
asp.net ×1
c# ×1
caching ×1
coldfusion ×1
doctrine-orm ×1
indexing ×1
java ×1
jwt ×1
memcached ×1
postgresql ×1
reactjs ×1
sql-server ×1