Официальный сайт студ.городка НГТУ
Программирование и БД » [mysql] Как определить используется ли индекс в запросе ? 

#1  27.05.10 13:01

[mysql] Как определить используется ли индекс в запросе ?

таблица radio с полями типа инт
id(primary, autoincrement), receiver_id, receiver_del, was_read

есть общий индекс сразу для трёх полей receiver_id, receiver_del, was_read.

будет ли использоваться это индекс в запросе
SELECT COUNT(id) FROM radio WHERE receiver_id=45 AND receiver_del=0 AND was_read=0



и как посмотреть откуда запроса читает данные?

Offline

#2  27.05.10 13:39

Re: [mysql] Как определить используется ли индекс в запросе ?

а при каждом ли удаление из таблицы переиндексируется таблица?

Offline

#3  27.05.10 14:36

Re: [mysql] Как определить используется ли индекс в запросе ?

When you precede a SELECT  statement with the keyword EXPLAIN, MySQL displays information from the optimizer about the query execution plan. That is, MySQL explains how it would process the SELECT, including information about how tables are joined and in which order. EXPLAIN EXTENDED can be used to provide additional information.

Таки оно?

Offline

#4  27.05.10 15:53

Re: [mysql] Как определить используется ли индекс в запросе ?

Offline

#5  27.05.10 16:05

Re: [mysql] Как определить используется ли индекс в запросе ?

Лис@, ути какая )

Offline

#6  27.05.10 16:39

Re: [mysql] Как определить используется ли индекс в запросе ?

iDrum, и чему вас только учили =)

Offline

#7  27.05.10 21:26

Re: [mysql] Как определить используется ли индекс в запросе ?

а ещё такой вопросец: представьте что база, допустим форума, у которого ну просто пипец активные пользователи, которые генерят много контента и самого контента много. как лучше поступить при удалении инфы?
1. удалять DELETE и не парится. по крону запускать OPTIMIZE TABLEы
2. сделать у строк до поле delete типа tinyint(1) UNSIGNED Default 0б, сделать на нём индекс (отдельный) и при удаление ставить его в 1, и выборку делать только по delete=0. Ночью же, либо когда активность на проекте минимальна делать DELETE...WHERE delete=1 и потом OPTIMIZE TABLE.
3. другой вариант

Offline

#8  28.05.10 15:01

Re: [mysql] Как определить используется ли индекс в запросе ?

iDrum, update все равно делает delete, а потом insert, на сколько я знаю... т.ч. думай...

Offline

#9  28.05.10 22:28

Re: [mysql] Как определить используется ли индекс в запросе ?

iDrum,

iDrum написал(а):

2. сделать у строк до поле delete типа tinyint(1) UNSIGNED Default 0б, сделать на нём индекс (отдельный) и при удаление ставить его в 1, и выборку делать только по delete=0. Ночью же, либо когда активность на проекте минимальна делать DELETE...WHERE delete=1 и потом OPTIMIZE TABLE.

А лучшу поставь CMS и не надо будет это делать ночью)

Offline

#10  30.05.10 11:10

Re: [mysql] Как определить используется ли индекс в запросе ?

мДЕ

Offline

#11  09.06.10 20:45

sav
Профиль

Re: [mysql] Как определить используется ли индекс в запросе ?

работал с информиксом, был баг, на больших запросах, оптимизатор не использовал индексы либо вообще, либо не самые подходящие
мы переписывали запросы, чтобы прям в нем указать, использовать такой то индекс явно

не уверен, что это подойдет, но капнуть можно, есть ли такая фича в mysql

Offline

#12  10.06.10 12:26

Re: [mysql] Как определить используется ли индекс в запросе ?

FORCE INDEX  есть в мускуле, но речь была а не об этом )

Offline

Программирование и БД » [mysql] Как определить используется ли индекс в запросе ? 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.603 сек.
Выполнено 14 запросов.