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標記,以獲得針對此類查詢的更好解決方案的多種解釋。





greatest-n-per-group