|
|
|
Не задействуется индекс в подзапросе
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Прошу помочь разобраться! Не могу понять почему не спользуется primary-индекс в основном запросе. Задача - выбрать по одной последней записи с фоткой для каждого пользователя (таковых всего 10, но перебирает все 1489): Код: sql 1. 2. 3. 1) PRIMARY as_data ALL NULL 1489 NULL Using where; Using filesort 2) DEPENDENT SUBQUERY as_data index user_id 4 NULL 10 Using where; Using filesort ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2014, 15:36:26 |
|
||
|
Не задействуется индекс в подзапросе
|
|||
|---|---|---|---|
|
#18+
Версия MySQL какая? Скорее всего до 5.6. А если так, то переписывайте констуркцию IN (SELECT ...) через JOIN. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2014, 15:37:55 |
|
||
|
Не задействуется индекс в подзапросе
|
|||
|---|---|---|---|
|
#18+
кажись вот это не дает индексу работать Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2014, 15:42:46 |
|
||
|
Не задействуется индекс в подзапросе
|
|||
|---|---|---|---|
|
#18+
miksoftВерсия MySQL какая? Скорее всего до 5.6. А если так, то переписывайте констуркцию IN (SELECT ...) через JOIN. Версия программы: 5.5.25 - MySQL Community Server (GPL) Ок, попробую покапаться... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2014, 15:43:15 |
|
||
|
Не задействуется индекс в подзапросе
|
|||
|---|---|---|---|
|
#18+
e_moon, странный запрос, а что надо, может все намного проще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2014, 15:44:11 |
|
||
|
Не задействуется индекс в подзапросе
|
|||
|---|---|---|---|
|
#18+
bochkovкажись вот это не дает индексу работать Код: sql 1. Нет, не повлияло. В самом подзапросе индекс (user_id) используется. Бред какой-то, но забавно... Добавил LIMIT: Код: sql 1. EXPLAINE пишет теперь - все ок, используется индекс PRIMARY. Но сам запрос (не EXPLAIN, а выборка) происходит за 38 сек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2014, 15:48:18 |
|
||
|
Не задействуется индекс в подзапросе
|
|||
|---|---|---|---|
|
#18+
bochkove_moon, странный запрос, а что надо, может все намного проще? Задача - выбрать по одной последней записи с фоткой для каждого пользователя. Т.е.: Вася, последняя запись с фото была 17.03.2014 Петя, последняя запись с фото была 16.03.2014 ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2014, 15:49:50 |
|
||
|
Не задействуется индекс в подзапросе
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2014, 15:57:13 |
|
||
|
Не задействуется индекс в подзапросе
|
|||
|---|---|---|---|
|
#18+
Попробовал составить JOIN - индексы в пролете... Короче, не могу сообразить. Не подкините какой-нибудь пример? SELECT * FROM as_data WHERE id IN ( SELECT MAX(id) FROM as_data INNER JOIN ( SELECT MAX(pubdate) AS maxdate, user_id FROM as_data GROUP BY user_id ) AS ms ON as_data.pubdate=ms.maxdate AND as_data.user_id=ms.user_id GROUP BY as_data.user_id ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2014, 15:58:29 |
|
||
|
Не задействуется индекс в подзапросе
|
|||
|---|---|---|---|
|
#18+
bochkov, спасибо, работает и быстро! Хотя и обходит все-равно все 1489 записи. Вот какой EXPLAIN: 1) PRIMARY <derived2> ALL NULL NULL NULL NULL 9 Using filesort 1) PRIMARY a eq_ref PRIMARY PRIMARY 4 r.id 1 2) DERIVED as_data ALL NULL NULL NULL NULL 1489 Using where; Using temporary; Using filesort ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2014, 16:02:17 |
|
||
|
Не задействуется индекс в подзапросе
|
|||
|---|---|---|---|
|
#18+
e_moon, так он и должен все записи обойти, LIKE "%jpg%" убирай и индекс (user_id,id) поставь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2014, 16:06:27 |
|
||
|
Не задействуется индекс в подзапросе
|
|||
|---|---|---|---|
|
#18+
bochkov, ок, спасибо вам большое! Все понял! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2014, 16:09:22 |
|
||
|
Не задействуется индекс в подзапросе
|
|||
|---|---|---|---|
|
#18+
e_moon, можно еще через NOT EXISTS попробовать, что-то вроде Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 15:49:04 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38589606&tid=1835101]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 354ms |

| 0 / 0 |
