|
MySQL.RU - Webboard
Вернуться
Оптимизация запроса (sol) 30/06/2003 - 20:25:24
Re: Оптимизация запроса (Mal Hack) 30/06/2003 - 23:51:21
Re: Оптимизация запроса (sol) 01/07/2003 - 05:45:52
Re: Оптимизация запроса (Antony) 01/07/2003 - 08:23:53
Re: Оптимизация запроса (sol) 01/07/2003 - 16:24:26
Re: Так что хто нибудь может предложить вариант? (sol) 02/07/2003 - 23:43:31
Re: Так что хто нибудь может предложить вариант? (Marat_L) 04/07/2003 - 09:17:21
Re: Так что хто нибудь может предложить вариант? (sol) 05/07/2003 - 17:06:07
Re: В догонку. (sol) 05/07/2003 - 17:12:09
Re: Так что хто нибудь может предложить вариант? (илья) 28/01/2005 - 12:56:56
> Original message text:
> From: sol - 30/06/2003 - 20:25:24
> Subject:Оптимизация запроса
> -----------------
> Есть вот такой запрос
>
> SELECT m1.m_id as into_id
> FROM `1_all_msg` AS m1
> LEFT JOIN `1_all_msg` AS m2
> ON m2.m_id = ( m1.m_id + 1 )
> WHERE m1.m_id >='500000000' and m2.m_id IS NULL
> order by m1.m_id limit 0, 1
>
> То есть он вытаскивает ИД более 500000000 за которым не существует записи.
> Как его можно оптимизировать? Бо при большом кол-ве записей порядка 200 тысяч, он очень долго выполняется.
>
From: Marat_L - 04/07/2003 - 09:17:21
Subject:Так что хто нибудь может предложить вариант?
-----------------
У тебя происходит объединение практически без использования индексов. Поэтому медленно. Декартово произведение 200000*200000=40000000000.
Хотя,я думаю на m_id у тебя есть индекс а на m_id+1 - точно нет. По-моему MySQL не создает индексы на выражения.
Так вот.
Если тебе НАДО оптимизировать запрос именно в таком виде, попробуй завести в таблице поле m_id1, например, которое будет содержать m_id+1, потом создай индекс по нему и делай объединение с участием этого поля. Должно быть быстрее.
А надо ли?
Чем для твоей тривиальной задачи не подходит auto_increment?
Для обеспечения неповторяемости отлично подходит !!!
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
19810
|
|