我尝试加入两个表,
SELECT E . * , D . *
FROM `basicincident` E
LEFT JOIN incident D ON E.`INC_KEY` = D.`INC_KEY`
WHERE E.`STATE` = "MD"
AND SUBSTRING( E.INC_DATE , -4 ) = "2009"
LIMIT 0 , 10
它产生了良好的结果..,
但是在实现order by时,生成结果需要更长的时间..,
SELECT E . * , D . *
FROM `basicincident` E
LEFT JOIN incident D ON E.`INC_KEY` = D.`INC_KEY`
WHERE E.`STATE` = 'MD'
AND SUBSTRING( E.INC_DATE , -4 ) = '2009'
AND E.INC_KEY >"MD0100110520090000015011111"
ORDER BY E.INC_KEY limit 0,2
何时
按顺序使用,
它无法正常工作..,
我该怎么做..,
感谢先进..,
答案 0 :(得分:0)
您是否使用周期期间需要空格?
SELECT E . * , D . *
您需要提供订单,因此请以这种方式创建SQL:
SELECT E.*, D.* FROM `basicincident` E
LEFT JOIN incident D ON E.`INC_KEY` = D.`INC_KEY`
WHERE E.`STATE` = 'MD'
AND SUBSTRING( E.INC_DATE , -4 ) = '2009'
AND E.INC_KEY > "MD0100110520090000015011111"
ORDER BY `E`.`INC_KEY` ASC
LIMIT 0,2
答案 1 :(得分:0)
E.INC_KEY和D.INC_KEY的索引会出于各种原因,包括这个原因。
您可以尝试通过d.INC_KEY进行排序,以防万一在优化器中发生了一些有趣的事情。
关于上述答案,请忽略它!
1)你不能忽略带有LIMIT的ORDER BY。如果你这样做会选择哪些行?无论从查询计划中吐出什么 - 很可能不是你想要的。如果您需要ORDER BY,那么您需要它。性能问题不应妨碍提供实际正确的结果!
2)数据库旨在排序。认为你可以做得更好是愚蠢的 - 你做不到。使用正确的工具来完成正确的工作。