1

このクエリ

SELECT
    itemID,
    locationParentID,
    locationID,
    categoryParentID,
    categoryID,
    itemTitle,
    itemDetails,
    itemAttributes,
    itemPictures,
    itemFeatured,
    itemSpotlight,
    itemAdded
FROM items
WHERE items.siteID IN('".$cfg['site']['siteShares']."') 
    AND EXISTS(SELECT 1 FROM sites_locations sl WHERE items.locationID  = sl.locationID AND siteID = '".$cfg['site']['siteID']."' LIMIT 1)
    AND EXISTS(SELECT 1 FROM sites_categories sc WHERE items.categoryID = sc.categoryID AND siteID = '".$cfg['site']['siteID']."' LIMIT 1)
    AND itemStatus = '1'
    AND itemAdded > '".$cfg['timestamp']."'

動作しますが、最大 6 秒かかります

JOIN私はそれがより速くなると推測しているので、私はそれを使用して行うことができます

これが私が試したものですが、 sテーブルJOINにあるアイテムだけでなく、すべての結果を返します。sites_location

SELECT 
    itemID, 
    locationParentID, 
    categoryParentID, 
    categoryID, 
    itemTitle, 
    itemDetails, 
    itemAttributes, 
    itemPictures, 
    itemFeatured, 
    itemSpotlight, 
    itemAdded 
FROM items LEFT JOIN sites_locations 
    ON items.locationID = sites_locations.locationID 
    AND sites_locations.siteID = items.siteID 
WHERE items.siteID IN('1,2')  AND itemStatus = '1'
    AND itemAdded > '1356048000' ORDER BY itemID DESC LIMIT 15
4

2 に答える 2

0

キーワードは、INNER JOIN両方のテーブルに少なくとも 1 つの一致がある場合に行を返します。

このLEFT JOINキーワードは、右側のテーブル (table_name2) に一致するものがなくても、左側のテーブル (table_name1) からすべての行を返します。

それが値を取得できない理由の違いです

このリンクを確認してください

于 2013-02-22T13:47:02.350 に答える
0

2 番目のクエリでテーブルsites_categoriesに結合するかどうかはわかりません。

于 2013-02-22T10:33:52.123 に答える