SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 01.03.2011 11:47:31

Vladimir_M
Участник
Зарегистрирован: 01.03.2011
Сообщений: 4

оптимизация select * from test where name in (select name from test group by name having count(name)

Помогите новичку оптимизировать запрос. Для больших таблиц не действует.
select * from test where name in (select name from test group by name having count(name)>1);

Неактивен

 

#2 01.03.2011 13:30:33

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: оптимизация select * from test where name in (select name from test group by name having count(name)

select t.* from test t join (select name from test group by name having count(name)>1) t1 on t.name=t1.name;

Неактивен

 

#3 01.03.2011 13:37:28

Vladimir_M
Участник
Зарегистрирован: 01.03.2011
Сообщений: 4

Re: оптимизация select * from test where name in (select name from test group by name having count(name)

Большое спасибо за вариант, но все равно висит.
Возмоно ли как либо проиндексировать стрки по полю для ускорения данного запроса??

Неактивен

 

#4 01.03.2011 13:40:22

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: оптимизация select * from test where name in (select name from test group by name having count(name)

Индекс по name нужен.

Неактивен

 

#5 01.03.2011 13:43:37

Vladimir_M
Участник
Зарегистрирован: 01.03.2011
Сообщений: 4

Re: оптимизация select * from test where name in (select name from test group by name having count(name)

Да, я это понимаю. Не подскажите какую литературу почитать? а то в манах читаю и понять сложно.
то есть
Create index i_name test.test(name);
и все?

Отредактированно Vladimir_M (01.03.2011 13:44:41)

Неактивен

 

#6 01.03.2011 13:50:28

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: оптимизация select * from test where name in (select name from test group by name having count(name)

create index i_nameon test (name);
http://dev.mysql.com/doc/refman/5.5/en/ … index.html

или с помощью alter table:
ALTER TABLE test ADD INDEX (name);
http://dev.mysql.com/doc/refman/5.5/en/alter-table.html

Неактивен

 

#7 01.03.2011 13:56:56

Vladimir_M
Участник
Зарегистрирован: 01.03.2011
Сообщений: 4

Re: оптимизация select * from test where name in (select name from test group by name having count(name)

Большое спасибо!

Неактивен

 

Board footer

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