我有一个查询,我在内部连接的派生表中执行 Order by。
前任:
SELECT g.*
FROM (
SELECT ...
FROM ...
ORDER BY alias.some_column
LIMIT 0, 20
) as g
... # other joins
这在 MySQL 中运行良好,但在 HSQLDB 中失败。我在这里下订单的原因是 mysql 比将 ORDER BY 放在外部查询中要快得多。这是纯粹的性能胜利。但是,HSQLDB 正在抱怨。
这是一个例外:
WARN JDBCExceptionReporter:100 - SQL Error: -70, SQLState: 37000
ERROR JDBCExceptionReporter:101 - Cannot be in ORDER BY clause in statement [SELECT g.* FROM gallery g LEFT OUTER JOIN preview p ON p.id = g.preview_id INNER JOIN ( SELECT g.id, g.date_created FROM gallery g WHERE g.published = true ORDER BY g.date_created DESC LIMIT 0, 20 ) as g_ids on g_ids.id = g.id ]
这是一个大问题,因为我的测试使用 HSQLDB,但生产系统是 MySQL。我可以将这些测试作为“异常”移动并针对 mysql 运行,但它要慢得多......并且为了让测试通过而使生产系统变慢会破坏测试点。
我可以重组我的测试以使用 mysql 进行一些测试,而不是一揽子使用 hsqldb 进行所有测试……这对我来说是一个很大的测试框架变化。那么有没有办法让 hsqldb 玩得很好,还是我必须改进我的测试框架?
谢谢!