3

哪个是首选,为什么?为了清楚起见,我使用整数值,但是这些将是字段名称。

  1. SELECT 2*1.0 / 3
  2. SELECT CAST(2 AS float) / 3
  3. SELECT CONVERT(float, 2) / 3
4

1 回答 1

3

从关于第一个和 CAST/CONVERT 的性能角度来看,我快速创建了一个临时表并使用 2 的值对其进行查询:

CREATE TABLE #temp (Two FLOAT)
INSERT INTO #temp VALUES (2)
SELECT * FROM #temp

SELECT Two*1.0 / 3 FROM #temp
SELECT Two*1E0 / 3 FROM #temp
SELECT CAST(Two AS FLOAT) / 3 FROM #temp
SELECT CONVERT(FLOAT,Two) / 3 FROM #temp

从中选择时,无论我输入多少不同的值,执行计划和统计信息 IO 都会给我相同的数字(每个四分之一)。我尝试输入其他值,如 5、6、7、8、9 等,甚至更多值,但成本相同。从上面列出的超越关系文章(这里:http ://beyondrelational.com/modules/2/blogs/77/posts/11334/cast-vs-convert-is-there-a-difference-as-far-as -sql-server-is-concerned-which-is-better.aspx),使用你的第一种方法似乎没有任何效果,至少在小值上(我确实使用了 2,000,000)。

于 2012-12-04T15:21:47.330 回答