Результаты эксперимента: скорость джоин vs вложенный цикл
На 1000 записей в каждом экземпляре временной раблицы
=============================================
0.28 - Времы вставки по 1000 записей в каждый из экземпляров временных таблиц
1001 - Количество выбранных записей в первой выборке
8.53 - Время выборки с джоином временных таблиц
1001 - Количество выбранных записей во второй выборке
0.05 - Время выборки с вложенным циклом вместо равнозначного первой выборке джоина временных таблиц
На 2000 записей в каждом экземпляре временной раблицы (увеличиваем количество строк временной таблицы вдвое)
==============================================================
0.53 - время вставки возросло почти вдвое
2001 - записей стало пракически вдвое больше
33.11 - времы выборки с джоином увеличилось вчетверо
2001 - нечего комментировать
0.08 - время выборки с вложенным циклом увеличилось меньше чем вдвое
Попробуем 4000 записей в каждом экземпляре временной раблицы (увеличиваем количество строк временной таблицы вдвое)
==============================================================
1.09 - опять чуть меньше чем вдвое
4001 - очень ожидаемо
136.34 - снова чуть больше чем вчетверо
4001 - нечего комментировать
0.17 - тоже чуть больше чем вдвое
Первые выводы:
Время вставки растет почти прямо пропорционально количеству записей.
Время выборки с вложенным циклом также растет прямо пропорционально количеству записей во временных таблицах.
Время выборки с джоином растет пропорционально приросту количества записей в квадрате.
Складывается впетатление, что джоин тупо перебирает все записи первой таблицы и для каждой аписи перебирает все записи второй таблицы. А потом уже смотрит на условия джоина.
Но это еще не все...
__________________
С уважением,
glibs®
Последний раз редактировалось glibs; 15.12.2011 в 01:46.
|