-解决方案-(SELECT id , unvan FROM unvan WHERE id IN (SELECT id FROM gorev_yeri WHERE il_id="34") ) ) AS Table1
JOIN( SELECT unvani as id , count(*) AS sayi FR
我重写了DoAfterPost过程;在这段代码中,我创建了另一个查询,用于获取与插入记录相关联的主键(即SELECT @IDENTITY for SqlServer,SELECT LAST_INSERT_ID() for MySql,等等)。在过去,我总是使用TAdoConnection进行数据库连接。在DoAfterPost内部进行的“子查询”调用中,没有问题,因为它是相同的会话(检索最后插入的主键的这些查询假设是持久的数据库连接)
我在MySQL 5.6中构建了一个连接20个表的大型查询。当我在Mac5.6的本地副本上运行查询时,我得到了1-2毫秒的响应时间。当我在Ubuntu上的mysql 5.5上运行相同的查询(通过MySQL转储使用相同的数据)时,我得到了60秒的响应时间。我对缓慢的查询运行了分析,发现几乎整个60秒都花在了“统计”阶段。“统计”阶段显然是MySQL决定如何最好地执行所有连接的阶段。
MySQL 5.6如
为什么MySQL不能一致地优化WHERE <indexed_field> IN (<subquery>)格式的查询SELECTFROMWHERE子查询select val from ...运行得非常快。问题是MySQL正在执行一个full table scan,以便从t1中获取所需的行--即使t1.indexed_field已经建立了索引。我已经通过将查询更改为内部
我正在使用子查询执行select,这个查询非常慢,10到20秒。select emailt1email not in (select email from t2)
实际上每个表中大约有30K行,但我可以很快地将其降到500行,并附加一个按类别过滤的只有当我添加这个子查询时,它才会显着地慢下来。因此,我确信这会更快,而且我知道连接应该比子查询快得多,但我不知道如何做到这一点。我在这里找到了一个