Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как застванить использовать индекс через ODBC драйвер?  [new]
vakum
Member

Откуда: Минск
Сообщений: 150
Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) Nov 24 2008 13:01:59 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)

На нем создан Linked Server

EXEC master.dbo.sp_addlinkedserver @server = N'FLOW', @srvproduct=N'MySQL', @provider=N'MSDASQL',@datasrc=N'FLOW'

Есть сервер с MySQL таблицей temp (порядка 20 млн записей)

CREATE TABLE `temp` (
`id` int(11) NOT NULL auto_increment
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

запрос через MSQLMS
select top 100 * from flow...temp - выполняется меньше секунды
select * from flow...temp where id = 1 - выкидывает ошибку MySQL client ran out of memory

этот же запрос на этом же сервере через MySLQ Query Browser выполняется за доли секунды ...

Я так понимаю что через ODBC сервер просто не видит\ не хочет использовать индекс.

Help ....
29 окт 09, 11:49    [7854750]     Ответить | Цитировать Сообщить модератору
 Re: Как застванить использовать индекс через ODBC драйвер?  [new]
Glory
Member

Откуда:
Сообщений: 104760
vakum
...

Я так понимаю что через ODBC сервер просто не видит\ не хочет использовать индекс.

Help ....

Неправильно. Серверу не хватает памяти, чтобы разместить в ней получаемый результат
29 окт 09, 11:53    [7854787]     Ответить | Цитировать Сообщить модератору
 Re: Как застванить использовать индекс через ODBC драйвер?  [new]
vakum
Member

Откуда: Минск
Сообщений: 150
Glory

Неправильно. Серверу не хватает памяти, чтобы разместить в ней получаемый результат


полученный результат 1 строка с одним столбцом типа int(11) О какой нехватки памяти может идти речь ?
29 окт 09, 12:15    [7855010]     Ответить | Цитировать Сообщить модератору
 Re: Как застванить использовать индекс через ODBC драйвер?  [new]
Glory
Member

Откуда:
Сообщений: 104760
vakum
Glory

Неправильно. Серверу не хватает памяти, чтобы разместить в ней получаемый результат


полученный результат 1 строка с одним столбцом типа int(11) О какой нехватки памяти может идти речь ?

Да ? А фильтрация по where id = 1 вы думаете на стороне MySQL происходит что ли ?
29 окт 09, 12:16    [7855018]     Ответить | Цитировать Сообщить модератору
 Re: Как застванить использовать индекс через ODBC драйвер?  [new]
vakum
Member

Откуда: Минск
Сообщений: 150
Glory
Да ? А фильтрация по where id = 1 вы думаете на стороне MySQL происходит что ли ?


если честно, то всегда думал что да .
29 окт 09, 12:28    [7855128]     Ответить | Цитировать Сообщить модератору
 Re: Как застванить использовать индекс через ODBC драйвер?  [new]
Glory
Member

Откуда:
Сообщений: 104760
vakum
Glory
Да ? А фильтрация по where id = 1 вы думаете на стороне MySQL происходит что ли ?


если честно, то всегда думал что да .

Ну так посмотрите на план. Там наверняка стоит передача набора на MSSQL и локальная фильтрация по id
29 окт 09, 12:30    [7855143]     Ответить | Цитировать Сообщить модератору
 Re: Как застванить использовать индекс через ODBC драйвер?  [new]
vakum
Member

Откуда: Минск
Сообщений: 150
Посмотрел, спасибо, буду знать

Тогда поставлю вопрос по другому. Как перелить таблицу порядка 20 млн строк с MySQL to MSSQL ?
29 окт 09, 12:51    [7855313]     Ответить | Цитировать Сообщить модератору
 Re: Как застванить использовать индекс через ODBC драйвер?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36805
SSIS'ом.
29 окт 09, 12:52    [7855328]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить