关于MySQL查询约束条件类型需要注意的一点

最近在工作中遇到了数据库服务器产生很多读写队列的问题,于是要求大家开始优化我们的SQL语句。

下面是查询quotedata_history表中的code字段的SQL语句,其中code字段的类型是varchar(6)。

20121217210533

以上查询语句是:

SELECT * FROM quotedata_history WHERE `code` = 600000

大家可以看到这个语句的code条件600000是没有加引号的,通过Navicate的截图大家可以看到这次查询花了14.169秒。

20121217210534

以上查询语句是:

SELECT * FROM quotedata_history WHERE `code` = '600000'

大家可以看到这个语句的code条件600000加了引号,通过Navicate的截图大家可以看到这次查询花了0.087秒。

这两个查询的效率相差实在是太大了!

所以大家要注意,以后查询数据库的时候,如果字段是string类型的,条件的值必须加上单引号,以提升查询的效率!

最近对数组指针的理解(请各位大虾指点指点)

最近在《面向对象程序设计基础(第二版)》这本书上看到一节关于指针数组和数组指针的区别,一下是我的理解,例如:

int* prt_array[10];

声明了一个包含10个整数类型指针变量的数组prt_array,也就是说声明了一个数组用来存放int类型的指针。

int (*array_ptr)[10];

声明的是一个指针类型的变量array_ptr,它指向一个长度为10的整数类型数组。

我们知道char ch[10];是一个字符串类型,其实是一个字符类型的数组。那么,一个指向字符串的指针是否就是char (*char_ptr)[10]呢?其实我一开始一直是这么认为的,觉得这样就是一个指针指向了数组的地址了,然后我编译之后发现地址的值是传不进去的,说类型不一样。最后我发现,其实字符串的指针跟字符的指针一样,就是char* char_ptr这样声明的。

以上是我个人的见解,不知道是否如此,如有错误请大家纰漏。

Tonitech版权所有 | 转载请注明出处: http://www.tonitech.com/?p=18