И аз не виждам нищо грешно....
| Truck | ALL | user | NULL | NULL | NULL | 6 | where used; Using temporary; Using filesort |
Колко temporary и колко сортира?
Имай предвид, че това се отнася за резултата от заявката а не за таблицата Truck
Направи следния тест.
CREATE TABLE test_size
SELECT tID, tUserID, tType, ttName AS tTypeName, tCountry, cName AS tCountryName, tmID AS tMark, tmName AS tMarkName, tModel, tmModelName AS tModelName, tCabin, tcName AS tCabinName, tSupStruct, tEkoNorm, tenName AS tEkoNormName, tSpeedBox, tsbName AS tSpeedBoxName, tHang, thName AS tHangName, tFuel, tfName AS tFuelName, tAxisConfig, tacName AS tAxisConfigName, tAxisCount, tTirePCAxis, tTireCol, tLPacket, tPower, tWeight, tUsefulLoad, tFirstReg, tKM, tPrice, tValute, vSig AS tValuteName, tInfo, tPics, tTimeAdd, DATE_FORMAT(tTimeAdd, "%H:%i %d.%m.%Y") AS tTimeAddF
FROM Truck, TruckType, TruckMark, TruckModel, TruckCabin, TruckEkoNorm, TruckSpeedBox, TruckHang, TruckFuel, TruckAxisConfig, Country, Valute, ValuteRates
WHERE tType = ttID AND tCountry = cID AND (tModel = tmModelID AND tmMarkID = tmID) AND tCabin = tcID AND tEkoNorm = tenID AND tSpeedBox = tsbID AND tHang = thID AND tFuel = tfID AND tAxisConfig = tacID AND (tValute = vID AND tValute = vrID) AND tUserID = 27;
И разгледай внимателно какво представлява въпросната таблица като структура. Това е приблизително временната таблица, която MySQL използва за да ти обработи заявката.
Пробвай
SELECT test_size RDER BY tID;
със и без LIMIT r ще се ориентираш за каков става въпрос и откъде идва забавянето.
> Не мога да разбера защо таблици като TruckFuel се сканират целите,
> докато например TruckCabin не.
Зависи от броя на редовете. При малко на брой редове индексите са по бавни и няма смисъл да се използват.
13 rows in set (2.70 sec)
> Изобщо не мога да зацепя защо е толкова бавен, експлайна е добър, като
> изключим двата скана извън основната таблица.
Ееххх ... а беше време когато хората се радваха когато такава заявка приключи за по-малко от 2 часа ...
|