【发布时间】:2020-09-04 08:44:02
【问题描述】:
我有一个只有 5 列和 8500 行的表。以下对 Oracle 数据库的简单查询大约需要 8 秒,而如果我将同一个表导入 Sql-Server 数据库,则只需不到 1 秒。
SELECT CustomerList.* FROM CustomerList ORDER BY TypeID, OrderNr, Title
问题:我对数据库完全陌生,并且已经开始获取有关它的知识,但是 8 秒对于 8500 条记录来说太长了。有什么办法可以解决这个问题吗?
更新:我从 Oracle 数据库中将表导出为文本文件,然后将测试文件导入另一个新的 Oracle 数据库以创建相同的表。当我对这个新创建的数据库执行上述查询时,查询的执行时间再次与以前相同(即大约 8 秒)。
【问题讨论】:
-
数据库性能是broad subject,具有许多方面(硬件、查询优化、索引、统计信息,...)。查询计划通常是一个很好的起点。你能share(sql-server)两个执行的查询计划吗?我不熟悉必须如何生成或解释 Oracle query plan。
-
在我看来,无论你用 8500 行做什么都应该非常快,即使在你 PC 上的 Excel 中,更不用说数据库服务器上的 Oracle 数据库(甚至如果是你的电脑)。 8500 行几乎没有。几次后续选择需要 8 秒,还是只发生一次?数据库在哪里? CPU是做什么的?网络?您使用哪种工具?如果删除 ORDER BY 子句会发生什么?
-
您的 HWM 是否设置为您的 CustomerList 表的高值?执行 CTAS 并重试(Oracle 数据库)
-
检查 here 在 Oracle 中遇到性能问题时您应该调查/发布的内容。检查
CUSTOMERLIST是否不是select OBJECT_TYPE from user_objects where object_name = 'CUSTOMERLIST'的(复杂的)view*。学习 google 例如Oracle CTAS -
如何查询数据库?使用 sqlplus?在屏幕上显示整个 8500 行?
标签: sql-server oracle