美文网首页程序员
每天聊点mysql(1)

每天聊点mysql(1)

作者: 苏文星 | 来源:发表于2016-05-08 23:28 被阅读128次

当只要一行数据时使用 LIMIT 1

当你查询表的有些时候,你已经知道结果只会有一条结果,但因为你可能需要去fetch游标,或是你也许会去检查返回的记录数。

在这种情况下,加上 LIMIT 1 可以增加性能。这样一样,MySQL数据库引擎会在找到一条数据后停止搜索,而不是继续往后查少下一条符合记录的数据。

下面的示例,只是为了找一下是否有“中国”的用户,很明显,后面的会比前面的更有效率。(请注意,第一条中是Select *,第二条是Select 1)

// 没有效率的:
$r = mysql_query("SELECT * FROM user WHERE country = 'China'");
if (mysql_num_rows($r) > 0) {
// ...
}

// 有效率的:
$r = mysql_query("SELECT 1 FROM user WHERE country = 'China' LIMIT 1");
if (mysql_num_rows($r) > 0) {
// ...
}

2. 避免 SELECT *

从数据库里读出越多的数据,那么查询就会变得越慢。并且,如果你的数据库服务器和WEB服务器是两台独立的服务器的话,这还会增加网络传输的负载。

所以,你应该养成一个需要什么就取什么的好的习惯。

// 不推荐
$r = mysql_query("SELECT * FROM user WHERE user_id = 1");
$d = mysql_fetch_assoc($r);
echo "Welcome {$d['username']}";

// 推荐
$r = mysql_query("SELECT username FROM user WHERE user_id = 1");
$d = mysql_fetch_assoc($r);
echo "Welcome {$d['username']}";

3. 永远为每张表设置一个ID

我们应该为数据库里的每张表都设置一个ID做为其主键,而且最好的是一个INT型的(推荐使用UNSIGNED),并设置上自动增加的 AUTO_INCREMENT标志。

就算是你 users 表有一个主键叫 “email”的字段,你也别让它成为主键。使用 VARCHAR 类型来当主键会使用得性能下降。另外,在你的程序中,你应该使用表的ID来构造你的数据结构。

而且,在MySQL数据引擎下,还有一些操作需要使用主键,在这些情况下,主键的性能和设置变得非常重要,比如,集群,分区……

在这里,只有一个情况是例外,那就是“关联表”的“外键”,也就是说,这个表的主键,通过若干个别的表的主键构成。我们把这个情况叫做“外键”。比如:有一个“学生表”有学生的ID,有一个“课程表”有课程ID,那么,“成绩表”就是“关联表”了,其关联了学生表和课程表,在成绩表中,学生ID和课程ID叫“外键”其共同组成主键。

4、ENUM而不是varchar

如果你有一个字段,比如“性别”,“国家”,“民族”,“状态”或“部门”,你知道这些字段的取值是有限而且固定的,那么,你应该使用 ENUM 而不是 VARCHAR。

相关文章

  • 每天聊点mysql(1)

    当只要一行数据时使用 LIMIT 1 当你查询表的有些时候,你已经知道结果只会有一条结果,但因为你可能需要去fet...

  • 每天聊点管理学,day1

    管理学其实也是一门规则,是利器,掌握好大杀四方,掌握不好就会伤及自身。 那么如何才能学会并熟练掌握呢,笔者也没不能...

  • 每天聊点家常话

    也许我内心是“禁忌”凡事用力过猛的,说到底,这也是对自己没有信心的表现。 也许害怕自己全力投入,认真踏实做一件事,...

  • 睡前聊点啥(1)

    情商高的人,无论在什么单位,那个地方无疑都会是大家伙好评如潮的对象。如果再加上碾压众人的智商,这样的人不说是人中龙...

  • Mac上安装MySQL

    1.安装MySQL 官网现下载地址:http://dev.mysql.com/downloads/mysql/ 点...

  • 面试问题记录

    1,笔试题 2聊项目 3聊对你最有挑战性的项目 4面试题 1 mysql主从同步,两种方式优缺点

  • 每天聊点道德经 -序言

    道德经一直为众多人推崇,但道德经到底讲的是什么呢?道德经起源于古代为君王讲解的治理国家的领导力法则。 道的三个内涵...

  • 每天聊点家常话(2)

    01 有时候,我喜欢疼痛,这,不是开玩笑的戏言。 最近拔自己白头发上了瘾,刚开始拔白头发的时候,每次都疼得龇牙咧嘴...

  • mac版MySQL初始密码!

    1.系统偏好设置->最下边点mysql 在弹出页面中 关闭mysql服务(点击stop mysql server)...

  • Mac mysql 安装时候访问出错

    step1:苹果->系统偏好设置->最下边点mysql 在弹出页面中 关闭mysql服务(点击stop mysql...

网友评论

    本文标题:每天聊点mysql(1)

    本文链接:https://www.haomeiwen.com/subject/cpzsrttx.html