SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

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

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

Вы не зашли.

#1 12.04.2009 19:51:52

XJIOP
Участник
Зарегистрирован: 28.02.2009
Сообщений: 22

индексы

возможно ли использование одновременно пару индексов в одном запросе?

это я к тому что бы они не повторялись, к примеру есть индексы на (parol, hash) и (parol, user) если возможно использовать два индекса одновремено то можно сделать прросто индексы на (parol) (hash) (user)

таблица часто обновляемая и плодирование индексов сказывается на нагрузке.

Неактивен

 

#2 13.04.2009 23:36:22

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

Re: индексы

Возможно, но этого тяжело добиться smile
Только точечные запросы по каждому из индексов, которые к тому же уникальны:

Код:

[celestia] root test > create table im (a int, b int, unique (a), unique (b));
Query OK, 0 rows affected (0.01 sec)

[celestia] root test > insert im values (1,10), (2,20), (3,30), (4,40), (5,50), (6,60);
Query OK, 6 rows affected (0.00 sec)
Records: 6  Duplicates: 0  Warnings: 0

[celestia] root test > explain select * from im where a = 3 or b = 50;
+----+-------------+-------+-------------+---------------+------+---------+------+------+-------------------------------+
| id | select_type | table | type        | possible_keys | key  | key_len | ref  | rows | Extra                         |
+----+-------------+-------+-------------+---------------+------+---------+------+------+-------------------------------+
|  1 | SIMPLE      | im    | index_merge | a,b           | a,b  | 5,5     | NULL |    2 | Using union(a,b); Using where | 
+----+-------------+-------+-------------+---------------+------+---------+------+------+-------------------------------+
1 row in set (0.00 sec)

Неактивен

 

#3 18.04.2009 23:08:03

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: индексы

А почему длину индекса показывает 5? INT ведь 4 байта занимает.

Неактивен

 

#4 18.04.2009 23:12:27

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: индексы

4 будет, если int NOT NULL

Неактивен

 

#5 20.04.2009 10:21:47

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: индексы

Так, выходит, да здравствует NOT NULL?
(т.е. везде, где NULL не нужен, надо писать NOT NULL?)

Неактивен

 

#6 20.04.2009 10:37:56

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: индексы

NOT NULL - простое правило, которое обычно не спасает ситуацию, но зато экономит часть байтов.

Неактивен

 

#7 20.04.2009 11:08:52

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

Re: индексы

И скорость работы некоторых запросов:

Код:

[celestia] root test > create table notnull (a int, b int not null, index(a), index(b));
Query OK, 0 rows affected (0.00 sec)

[celestia] root test > insert notnull values (1,1),(2,2),(3,3),(4,4),(5,5);
Query OK, 5 rows affected (0.00 sec)
Records: 5  Duplicates: 0  Warnings: 0

[celestia] root test > explain select * from notnull where a=3;
+----+-------------+---------+------+---------------+------+---------+-------+------+-------------+
| id | select_type | table   | type | possible_keys | key  | key_len | ref   | rows | Extra       |
+----+-------------+---------+------+---------------+------+---------+-------+------+-------------+
|  1 | SIMPLE      | notnull | ref  | a             | a    | 5       | const |    1 | Using where | 
+----+-------------+---------+------+---------------+------+---------+-------+------+-------------+
1 row in set (0.00 sec)

[celestia] root test > explain select * from notnull where b=3;
+----+-------------+---------+------+---------------+------+---------+-------+------+-------+
| id | select_type | table   | type | possible_keys | key  | key_len | ref   | rows | Extra |
+----+-------------+---------+------+---------------+------+---------+-------+------+-------+
|  1 | SIMPLE      | notnull | ref  | b             | b    | 4       | const |    1 |       | 
+----+-------------+---------+------+---------------+------+---------+-------+------+-------+
1 row in set (0.00 sec)

Неактивен

 

Board footer

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