|
поясните, а то совсем не понимаю что происходит
|
|||
---|---|---|---|
#18+
Есть 2 таблицы: region_streets ( region_id INT UNSIGNED NOT NULL, street_id INT UNSIGNED NOT NULL, PRIMARY KEY (region_id,street_id); И streets ( street_id INT UNSIGNED NOT NULL Auto_increment, town_id INT UNSIGNED NOT NULL, street_name varchar(128) NOT NULL, PRIMARY KEY (street_id) ); в обеих таблицах ~>2000 строк данных, Делаю запросы вида: 1) select count(*) from region_streets left join streets on (region_streets.street_id=streets.street_id) where town_id=300000; Результат: +----------+ | count(*) | +----------+ | 2118 | +----------+ 1 row in set (0.03 sec) 2) select count(*) from streets left join region_streets on (region_streets.street_id=streets.street_id) where town_id=300000; Результат: +----------+ | count(*) | +----------+ | 2118 | +----------+ 1 row in set (4.90 sec) То есть 2й запрос занимает много больше времени чем первый. Поясните пожалуйста, почему так происходит ? PS: убирание "where town_id=300000" на время не влияет Заранее благодарю ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2003, 00:24 |
|
поясните, а то совсем не понимаю что происходит
|
|||
---|---|---|---|
#18+
Покажи explain обоих запросов... Хотя предварительно можно предположить, что такая беда из за того, что ты делаешь join по полю, который в индексе не стоит первым. Попробуй ради интереса сделай create index hren on region_streets(street_id); и попробуй еще раз свои запросы.. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2003, 01:55 |
|
|
start [/forum/topic.php?fid=47&tid=1855899]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 144ms |
0 / 0 |