Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 01:29 07.07.25 
Компютри и Интернет
   >> Бази данни
*Кратък преглед

Тема USE/FORCE INDEXнови  
Автор mr.vain (пътник 57)
Публикувано01.08.07 21:45



Здравейте!

Имам два въпроса, свързани с USE/FORCE INDEX в MySQL.

Първо, каква е разликата между това дали ще е USE или FORCE (да, зная, че самите думи предполагат как ще се използва индекса), тъй като в реална ситуация не видях разлика.

И другото (съжалявам ако въпроса е ламерски), но защо в дадени ситуации при липса на USE/FORCE INDEX MySQL-a връща резултат, а при наличието му - не?

Рових подробно в mysql.com и

на г-н Peter Zaitsev (изключително съдържателен блог между другото), но не успях да намеря отговори на въпросите си...

Предварително благодаря!

Редактирано от mr.vain на 01.08.07 23:23.



Тема Re: USE/FORCE INDEX [re: mr.vain]  
Автор salle (един такъв)
Публикувано02.08.07 15:12



USE INDEX е "препоръка" с която оптимизатора може и да не се съобрази а FORCE INDEX е "заповед"

Нормално е ефектът да е еднакъв.

"защо в дадени ситуации при липса на USE/FORCE INDEX MySQL-a връща резултат, а при наличието му - не? "

Дай пример! Това или е някакъв много странен бъг или е повреден индекс.



Тема Re: USE/FORCE INDEXнови [re: salle]  
Автор mr.vain (пътник 57)
Публикувано02.08.07 16:19



Ето пример:

SELECT
th.themeID,
th.themeNameEN,
ht.handlingID,
ht.handlingNameEN,
DATE(m.updated) AS updated,
COUNT(*) AS mainCount
FROM
v8_main AS m
INNER JOIN v8_themes AS th ON m.themeID = th.themeID
INNER JOIN v8_handling_types AS ht ON m.handlingID = ht.handlingID
WHERE
m.segmentID IN (4,5,6,1,3)
AND m.ph1008 IN (2,1,5,10,3,7,6,11,12,9,8,4)
AND m.handlingID IN (2,19,17,3,20,1,18,7,12,14,9,4,15,10,11,8,5)
AND DATE(m.updated) BETWEEN '2007-07-01' AND '2007-08-01'
GROUP BY
th.themeID,
ht.handlingID
ORDER BY
th.themeID,
ht.handlingNameEN;

# Query_time: 37 Lock_time: 0 Rows_sent: 71 Rows_examined: 1521661

---------------------------

SELECT
th.themeID,
th.themeNameEN,
ht.handlingID,
ht.handlingNameEN,
DATE(m.updated) AS updated,
COUNT(*) AS mainCount
FROM
v8_main AS m FORCE INDEX(monthStat_IDX)
INNER JOIN v8_themes AS th ON m.themeID = th.themeID
INNER JOIN v8_handling_types AS ht ON m.handlingID = ht.handlingID
WHERE
m.segmentID IN (4,5,6,1,3)
AND m.ph1008 IN (2,1,5,10,3,7,6,11,12,9,8,4)
AND m.handlingID IN (2,19,17,3,20,1,18,7,12,14,9,4,15,10,11,8,5)
AND DATE(m.updated) BETWEEN '2007-07-01' AND '2007-08-01'
GROUP BY
th.themeID,
ht.handlingID
ORDER BY
th.themeID,
ht.handlingNameEN;

# Query_time: 22 Lock_time: 0 Rows_sent: 0 Rows_examined: 1673826

monthStat индекса е на полетата `ph1008`, `handlingID`

Има три вида хора. Част от проблема, част от решението и част от пейзажа.

Редактирано от mr.vain на 02.08.07 16:44.



Тема Re: USE/FORCE INDEXнови [re: mr.vain]  
Автор BълkМодератор (много злобен)
Публикувано03.08.07 04:49



няма ли да пуснеш дефиниране на индекси по таблиците, че така да гадаем е [цунзурирано]



Тема Re: USE/FORCE INDEXнови [re: Bълk]  
Автор mr.vain (пътник 57)
Публикувано03.08.07 11:49



mysql> show index from v8_main;
+---------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+---------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| v8_main | 0 | PRIMARY | 1 | id | A | 1675502 | NULL | NULL | | BTREE | |
| v8_main | 1 | empID_IDX | 1 | empID | A | 341 | NULL | NULL | YES | BTREE | |
| v8_main | 1 | msisdn_IDX | 1 | msisdn | A | 837751 | NULL | NULL | YES | BTREE | |
| v8_main | 1 | themeID_IDX | 1 | themeID | A | 167550 | NULL | NULL | YES | BTREE | |
| v8_main | 1 | themeID_IDX | 2 | handlingID | A | 167550 | NULL | NULL | YES | BTREE | |
| v8_main | 1 | monthStat_IDX | 1 | ph1008 | A | 13 | NULL | NULL | YES | BTREE | |
| v8_main | 1 | monthStat_IDX | 2 | handlingID | A | 121 | NULL | NULL | YES | BTREE | |
+---------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
7 rows in set

mysql> show index from v8_themes
;
+-----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+-----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| v8_themes | 0 | PRIMARY | 1 | themeID | A | 232 | NULL | NULL | | BTREE | |
+-----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
1 row in set
mysql> show index from v8_handling_types
;
+-------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+-------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| v8_handling_types | 0 | PRIMARY | 1 | handlingID | A | 17 | NULL | NULL | | BTREE | |
+-------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
1 row in set

Има три вида хора. Част от проблема, част от решението и част от пейзажа.



*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2025 Dir.bg Всички права запазени.