Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1289|回复: 0

[推荐] Mys ~ ~ ql读语句优化一些好的习惯----yueliangdao0608

[复制链接]

该用户从未签到

发表于 2011-10-30 08:47:47 | 显示全部楼层 |阅读模式
1、
SELECT * FROM t WHERE YEAR(d) >= 1994;

SELECT * FROM t WHERE d >= '1994-01-01';//这个好,相比上面的语句没有用year函数,
-------------------------------------------------------------------------------
2、
SELECT * FROM Country ,CountryLanguage
WHERE Country.Code= CountryLanguage.CountryCode;

SELECT * FROM Country JOIN CountryLanguage
ON Country.Code= CountryLanguage.CountryCode;//这个好,显式shuo(说)明了连接关系,以前好像在哪里看到过,记不起来了
-------------------------------------------------------------------------------
3、
SELECT * FROM t WHERE id = ‘19’;

SELECT * FROM t WHERE id = 19;//id she(设)置cheng(成)int类xing(型)的要比char或者archar的好?不是很明白
-------------------------------------------------------------------------------
4、
SELECT * FROM t WHERE length(column_t) = 5;

SELECT * FROM t WHERE column_length=5; //这个ye(也)不明白

--------------------------------------------------------
5、
SELECT * FROM t WHERE name LIKE '%de%‘

SELECT * FROM t WHERE name LIKE 'de%'
SELECT * FROM t WHERE name >= 'de' AND name < 'df‘//将like查询改成非like查询?ju(具)体例zi(子)什么意思不清楚
-------------------------------------------------------------------------------
6、
SELECT * FROM t WHERE 1;

SELECT * FROM t WHERE 1 LIMIT 10;这个也不懂
-------------------------------------------------------------------------------
7、
SELECT * FROM Country WHERE Name LIKE 'M%';

SELECT Name FROM Country WHERE Name LIKE 'M%';//只取需要的zi(字)段

在看yueliangdao0608的Mysql开发与优化的ppt时,看Dao(到)了上面的sql,所以拿出来请教下
http://www.javaxxz.com
回复

使用道具 举报

该用户从未签到

发表于 2011-10-30 08:47:51 | 显示全部楼层

Re:[推荐]

1、
第二个,也就是 WHERE d >= '1994-01-01';这个可以使用索引。


2、
效率上一样,好坏无法明确说明,这个一直存在争议。

3、
INT的速度会快一些。整数处理起来比字符串快。


4、
估计是让加个字段 column_length


5、
name LIKE '%de%‘肯定效率不好,但要看需求。

至于 name LIKE 'de%' 和 name >= 'de' AND name < 'df‘/ 应该没有明显差距。不过需要做试验以确认。


6、
看MYSQL手册中的LIMIT 的作用

7、
如果不需要其它字段,当然不要列,这样,只需要处理你需要的字段,至少网络上可以少传不少字节。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-30 08:47:56 | 显示全部楼层

Re:[推荐]

路过学习了
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-30 08:47:57 | 显示全部楼层

Re:[推荐]

+学习
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-30 08:48:10 | 显示全部楼层

Re:[推荐]

谢谢了,明白了
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-30 08:48:38 | 显示全部楼层

Re:[推荐]

1.对于WHERE子句中的任何字段都不允许加函数 因为加函数了会导致 无法使用到索引

---- MySQL不支持函数索引,Oracle到支持,但是效率也会低一些


2.无必要,若是SQL复杂或3或3张以上表关联推荐此写法

3.可以使用到索引的,但是输出结果集中该字段会被隐形转换为 字符串了,若是后面再用此字段作ORDER BY等条件就无法继续使用索引了


4.这个要看设计的字段含义了

5.不能这么简单地转换,是未必的... 应该会出问题

6.WHERE 1 不影响查询结果或优化器,但这是很多程序员的不良习惯造成的

推荐一个PPT给大家参考:http://www.mysqlops.com/2011/05/25/mysql-training-ppt.html


#****************************************#
MySQL技术及运维自动化网:www.mysqlops.com

新浪微博账号:http://weibo.com/mysqlops
#****************************************#
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-30 08:48:48 | 显示全部楼层

Re:[推荐]

老金也来给添柴加火了,热烈欢迎!
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-30 08:48:49 | 显示全部楼层

Re:[推荐]

能否再给解释下:WHERE 1 不影响查询结果或优化器,但这是很多程序员的不良习惯造成的?

我刚才看了limit的作用,
Mysql说明文档里面这么写的:如果你用LIMIT只选择一些行,当MySQL选择做完整的表扫描
时,它将在一些情况下使用索引

3.可以使用到索引的,但是输出结果集中该字段会被隐形转换为 字符串了,若是后面再用此字段作ORDER BY等条件就无法继续使用索引了   
这个解释我觉得也许更好点,之前ACMAIN_CHM 说的有道理,但是我之前看过帖子讨论int跟varchar效率问题,跟数据量有很大关系,数据量不大的时候差不多的。
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2011-10-30 08:48:50 | 显示全部楼层

Re:[推荐]

where 1个人认为在性能上有没有没区别,只是在程序语言中组合条件方便些,如:

$sql = 'select field from tableName';

if($a){
$sql .= ' where a = ' . $a;
}

if($b){
if($a){
$sql .= ' and b = ' . $b;
}else{
$sql .= ' where b = ' . $b;
}
}

可以变成
$sql = 'select field from tableName where 1';

if($a){
$sql .= ' and a = ' . $a;
}

if($b){
$sql .= ' and b = ' . $b;
}
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-30 08:48:54 | 显示全部楼层

Re:[推荐]

有函数多方便额!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-5-22 06:58 , Processed in 0.413675 second(s), 33 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表