type - mysql use index
FORCE INDEX mySQL......我把它放在哪裡? (1)
我有以下mySQL查詢,完全正常。 除了我需要添加“FORCE INDEX”,我不確定我必須在哪裡做到這一點。 我嘗試了幾乎每個位置,並始終收到mySQL錯誤。 我究竟做錯了什麼?
這是原始查詢:
$sql_select_recent_items = $db->query("SELECT * FROM (SELECT owner_id, product_id, start_time, price, currency, name, closed, active, approved, deleted, creation_in_progress FROM db_products ORDER BY start_time DESC) as resultstable
WHERE resultstable.closed=0 AND resultstable.active=1 AND resultstable.approved=1 AND resultstable.deleted=0 AND resultstable.creation_in_progress=0
GROUP BY resultstable.owner_id
ORDER BY start_time DESC");
查詢以這種方式構造,以便我可以在“GROUP BY”之前執行“ORDER BY”,以防您想知道。
我需要補充的是:
FORCE INDEX (products_start_time)
我在幾乎沒有成功的地方試過它,這讓我相信有一些更複雜的東西我不知道了嗎?
索引提示的語法在此處記錄:
http://dev.mysql.com/doc/refman/5.6/en/index-hints.html
索引索引在表引用後右轉:
SELECT * FROM (
SELECT owner_id, product_id, start_time, price, currency, name, closed,
active, approved, deleted, creation_in_progress FROM db_products
FORCE INDEX (products_start_time)
ORDER BY start_time DESC) as resultstable
WHERE resultstable.closed=0
AND resultstable.active=1
AND resultstable.approved=1
AND resultstable.deleted=0
AND resultstable.creation_in_progress=0
GROUP BY resultstable.owner_id
ORDER BY start_time DESC
警告:
如果您在GROUP BY
ORDER BY
之前使用ORDER BY
來獲取每個owner_id的最新條目,那麼您將使用MySQL的非標準和未記錄的行為來執行此操作。
無法保證它將繼續在MySQL的未來版本中運行,並且查詢可能是任何其他RDBMS中的錯誤。
搜索greatest-n-per-group標記,以獲得針對此類查詢的更好解決方案的多種解釋。