У меня есть экземпляр Microsoft SQL Server 2008 и база данных Oracle 10g, установленные рядом на одном и том же удаленном сервере с одинаковыми точными данными, загруженными на каждый из них.
Я написал программу для простого запроса, который возвращает около 10 000 записей (SELECT * FROM TABLE WHERE X=X). Что я вижу в этом тесте, так это то, что Oracle возвращает где-то в 4-12 раз медленнее, чем MSSQL. Я протестировал соединение по локальной сети, удаленно через VPN, используя ODP.NET4, ODP.NET2, убедившись, что в 32-битной операционной системе установлена правильная 32-битная версия, и то же самое для 64-битной.
Мои результаты всегда одинаковы в том, что Oracle всегда во много раз медленнее, чем экземпляр SQL Server.
Я также пробовал тот же запрос в SQL Developer, и этот инструмент извлекает тот же набор записей намного быстрее. Когда я заставляю инструмент извлекать все записи, он работает примерно на 20% медленнее, чем SQL Server, что, по крайней мере, было бы приемлемо в моем сценарии.
Любая помощь приветствуется. Я знаю, что есть несколько похожих вопросов, но ответы на них не помогли решить проблему.
Спасибо
- С сервера базы данных: 3 с (Oracle) против 0,6 с (SQL Server)
- Откуда-то в локальной сети: 22 с (Oracle) против 4 с (SQL Server)
- С удаленной машины через vpn: 54 с (Oracle) против 21 с (SQL Developer) против 13 с (SQL Server)
Дополнительный вопрос: это падение производительности, которое вы испытываете в своих приложениях, совместимых с ODP.NET + SQL Server, или я прав, предполагая, что что-то не так?