#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
#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
#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
#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
#11 09.06.10 20:45
Re: [mysql] Как определить используется ли индекс в запросе ?
работал с информиксом, был баг, на больших запросах, оптимизатор не использовал индексы либо вообще, либо не самые подходящие
мы переписывали запросы, чтобы прям в нем указать, использовать такой то индекс явно
не уверен, что это подойдет, но капнуть можно, есть ли такая фича в mysql
Offline

