字符串型MySQL查询条件需要注意的一点

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

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

以上查询语句是:

SELECT * FROM quotedata_history WHERE `code` = 600000

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

以上查询语句是:

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

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

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

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

时间: 2024-08-27 05:45:41

字符串型MySQL查询条件需要注意的一点的相关文章

字符串变量作mysql查询条件

原文:http://blog.csdn.net/qing_gee/article/details/41646503 当你的查询条件是一个字符串变量时,你该怎么办,比如字符串可能是“0001ME,0002BL”,也可能是“0001ME”,那么如何根据条件得到想要的结果呢,我来告诉你instr方法的厉害之处. 1.开始的时候一直在将字符串str转换为in函数的参数,如下 SELECT * FROM stocks_orderlist s where s.scode in ("0001ME",

mysql 查询条件中文问题

这是mysql字符编码的问题,因为mysql默认的字符编码为latin1它并不识别中文,所以在读取查询语句时会出现乱码 从而使查询条件不正确所以我们只需要更改它的字符编码就可以一般都是用utf8 这里更改mysql配置文件 使其默认的字符编码为utf8 /mysql/my.ini中找到[client]添加 default-character-set=utf8找到[mysql] 添加 default-character-set=utf8 还有一种方式 .net 链接字符串内加 charset=ut

转!!mysql 查询条件不区分大小写问题

做用户登录模块时,输入用户名(大/小写)和密码 ,mysql都能查出来.-- mysql查询不区分大小写. 转自 http://blog.csdn.net/qishuo_java/article/details/40118937 找出用户名id为'AAMkADExM2M5NjQ2LWUzYzctNDFkMC1h'的用户的数据: select * from usertable where id = 'AAMkADExM2M5NjQ2LWUzYzctNDFkMC1h'; 结果出现两条记录.这就奇怪了

Mysql 查询条件中字符串尾部有空格也能匹配上的问题

一.表结构 TABLE person id name 1 你 2 你(一个空格) 3 你(二个空格) 二.查询与结果 select * from person where `name` = ? 无论 ? = ”你 + 几个空格”,都会检索出全部三个结果. 三.原因 MySQL 校对规则属于PADSPACE,会忽略尾部空格 针对的是 varchar char text …… 等文本类的数据类型 此为 SQL 标准化行为.无需要设置也无法改变. 四.想要精确查询怎么办? 方法一:like selec

MySQL与OLAP:分析型SQL查询最佳实践探索

搞点多维分析,糙快猛的解决方案就是使用ROLAP(关系型OLAP)了.数据经维度建模后存储在MySQL,ROLAP引擎(比如开源的Mondrian)负责将OLAP请求转化为SQL语句提交给数据库.OLAP计算分析功能导致MySQL需要进行较多复杂SQL查询,性能调优必不可少,本文总结了一些实用原则. OLAP特点 OLAP的典型应用包括复杂动态报表,需要支持钻取(上卷和下钻).切片.切块和旋转操作.下表总结了OLAP和OLTP系统的主要区别.OLAP的特点决定了SQL的查询场景和优化方案,下文将

08、MySQL—字符串型

字符串型 1.Char 定长字符:指定长度之后,系统一定会分配指定的空间用于存储数据 基本语法: char(L),L代表字符数(中文与英文字母一样),L长度为0到255 2.Varchar 变长字符:指定长度之后,系统会根据实际存储的数据来计算长度,分配合适的长度(数据没有超出长度) 基本语法: Varchar(L),L代表字符数,L的长度理论值位0到65535 因为varchar要记录数据长度(系统根据数据长度自动分配空间),所以每个varchar数据产生后,系统都会在数据后面增加1-2个字节

mysql中条件查询加排序和索引的关系

跟一个朋友,不错公司的主管交流时,对于mysql中条件查询和排序时 与索引的关系 mysql> explain select * from article where title='希望光伏企业挺过2个月' o rder by id desc\\\\\\\\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: article type: index pos

hibernate连接mysql,查询条件中有中文时,查询结果没有记录,而数据库有符合条件的记录(解决方法)

今天在另一台服务器上重新部署了网站,结果出现了以下问题: ——用hibernate做mysql的数据库连接时,当查询条件中有中文的时候,查询结果没有记录,而数据库中是存在符合条件的记录的. 测试了以下,发现不加条件查询可以查到,加上查询条件包含中文就无法找到记录. 百度发现,以下两篇文章很有帮助. http://gzxabcdefg.blog.163.com/blog/static/23451794201081554816892/ http://bbs.51cto.com/thread-1031

MySQL where型子查询

where型子查询是内层查询的结果,作为外层sql的比较条件. select goods_id, goods_name from goods where goods_id = (select max(goods_id) from         goods); 内层查询为select max(goods_id) from goods 外层查询为select goods_id, goods_name from goods where goods_id 就是在把最大的goods_id的值赋给外层的g