MSSQL的弱智设计之处!
哥最近使用MSSQL,用出火来了,不仅仅是因为不熟悉,而且是因为MSSQL那些自以为是、闭门造车、落后过时的设计!
所以要开此贴,把这些弱智之处记录下来!
1、select * from tablexxx; 这样没有order by 的sql 默认按照主码排序问题。
首先我没有让你排序,你给我排序干嘛?你不知道排序数据会造成效率严重下降吗?
就算你是按照聚簇索引输出的而不是索引排序,我让你建聚簇索引了吗?你不知道聚簇索引在插入和更新数据时会有效率问题吗?
2、数据字典中大量使用数字而不是易读的字符串代表名称、类型等问题。
这就是为什么google上很多syscolumns表中各个列代表什么意思的文章出现的原因。难道用对象名、数据类型名等等这些字符串不行吗?你以为用数字ID就比字符串效率低了?
3、一次性返回所有行的问题。
只要数据量稍微多点,sqlserver都会很慢,为什么?因为它会把所有数据都一次性查出来?有必要吗?你不知道首先快速的返还出100行来,等我请求第101行的时候你再返回200行吗?
4、 Convert等这样又像函数又像语句的不知道叫啥好的东西的问题。
你要是定义成Convert(‘varchar’, column1..)这样我还可以理解,但是你竟然定义成Convert(varchar, column1..),那我问你varchar是什么啊? 是字符串,那Convert就是一个函数,应该加上单引号, 如果是类型,那Convert就应该是语句,格式就应该是Convert varchar from column1等等这样的格式,而不是类似一个函数。。。
5、未完待续。。。