1. SQL / Говнокод #12454

    −167

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    SELECT
    	slave.*,
             -- ...
    	FROM
    		(SELECT * FROM driver WHERE id = '$driverID') as slave
    	LEFT JOIN
             -- ...

    Отыскал в работающем проекте

    Запостил: et, 21 Января 2013

    Комментарии (5) RSS

    • Чтоб никто не догадался. :)
      На самом деле для MySQL (не знаю насчёт других) иногда имеет смысл, если всё остальное LEFT-ы и отфильтровать результат до WHERE никак. Джойнить к одной строке или ко всей таблице и потом по темпу WHERE гонять - разница есть. Хотя тоже когда как... Без EXPLAIN-а не разберёшься. :)
      Ответить
    • меня очень сильно удивит если MySQL этот под-запрос незаинлайнит. Оракакл и Сибас такую мелочь точно инлайнят. другими словами, разница только в синтаксисе.
      Ответить
      • Не инлайнит... Погонял на оставшихся тестовых табличках
        EXPLAIN SELECT t.*
        FROM (SELECT * FROM test WHERE id=748) t
        	LEFT JOIN testreviews tr ON (tr.id = t.review);
        
        "id","select_type","table"           ,"type"     ,"key"         ,"rows","Extra"
        "1", "PRIMARY"   , "<derived2>","system",\N               ,"1",""
        "1", "PRIMARY"   ,"tr"                 ,"const"   ,"PRIMARY","1","Using index"
        "2", "DERIVED"    ,"test"             ,"const"   ,"PRIMARY","1",""
        
        EXPLAIN SELECT t.*
        FROM test t
        	LEFT JOIN testreviews tr ON (tr.id = t.review)
        WHERE t.id = 748;
        
        "id","select_type","table","type" ,"key"           ,"rows","Extra"
        "1","SIMPLE"        ,"t"       ,"const","PRIMARY","1",""
        "1","SIMPLE"        ,"tr"      ,"const","PRIMARY","1","Using index"

        На самом деле смутило что во втором случае он ключик всё равно не юзает... CONSTRAINT `test_ibfk_1` FOREIGN KEY (`review`) REFERENCES `testreviews` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
        Ответить
        • Блин, фиг угадаешь форматирование в [code] имея варьирующийся шрифт в редакторе коммента... Гр...
          А... Ну да, он же PRIMARY и есть, нормально. :)
          Ответить
    • раб за баранкой
      Ответить

    Добавить комментарий