SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 25.03.2011 00:57:12

simple
Активист
Зарегистрирован: 25.11.2010
Сообщений: 168

Left join и exmlain

Подозреваю что пишу глупость но мне как новичку свойственно задавать такие вопросы...Что то в последнее время я начал подозревать свой Mysql и explain в частности на неадекватность поведения. Суть вот в чем, есть две таблицы account и product, в первой таблице данные о клиентах, во второй находятся данные о продуктах которые принадлежат этим самым клиентам. Задача: нужно выбрать из таблице product все строки с продуктами принадлежащии скажем Пети и Васи. Решение: SELECT FROM account tab1 LEFT JOIN product tab2 ON tab2.usr=tab1.usr WHERE tab1.usr=('Петя' OR 'Вася'). Explain пишет что для всех таблиц используется связывание ref, поиск идет по индексу usr, поле  rows выдает 1!!! Для таблицы  product! A naj SELECT выдает десять наименований продултов принадлежащии Пети и Васи, а всего в таблице 500 строк, как такое возможно? Не глюк ли это? Или  JOIN этот волшебныйsmile

Отредактированно simple (25.03.2011 01:02:55)

Неактивен

 

#2 25.03.2011 01:09:56

simple
Активист
Зарегистрирован: 25.11.2010
Сообщений: 168

Re: Left join и exmlain

Также тестил этот самый запрос на 1000 строк для таблице product, explain так же выдает колонку rows для product 1. Хотя Селект выводит 35 строк. Обьясните как такое возможно или всетаки explain врет?

Неактивен

 

#3 25.03.2011 02:11:35

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Left join и exmlain

WHERE tab1.usr=('Петя' OR 'Вася') — Вас эта конструкция должна была насторожить.
Вот такую подсказку дам:

Код:

mysql> SELECT 'Петя' OR 'Вася';
+--------------------------+
| 'Петя' OR 'Вася'         |
+--------------------------+
|                        0 |
+--------------------------+
1 row in set, 2 warnings (0.00 sec)

Ну и правильный ответ сразу, наверное: WHERE usr IN ('Петя', 'Вася').

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson