仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1547|回复: 20
打印 上一主题 下一主题

[学习教程] PHP网页编程之为数据库创立索引(一)

[复制链接]
金色的骷髅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:18:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
培训的第三阶段,开始接触MYSQL,设计数据库,学习PHP如何去连接MYSQL数据库。对于MYSQL,我并不陌生,因为学校开设了Linux系统的课程,对于数据库的操作。数据|数据库|索引     就象很多的PHP开辟者一样,在刚入手下手创立静态网站的时分,我都是利用绝对复杂的数据布局。PHP在毗连数据库方面切实其实实是非常便利(译者注:有些人以为PHP在毗连分歧数据库时没有一个一致的接口,不太便利,其实这可以经由过程一些扩大库来做到这一点),你无需看大批的设计文档就能够创立和利用数据库,这也是PHP取得胜利的次要缘由之一。

  前些时分,一名颇初级的法式员竟然问我甚么叫做索引,令我感应非常的惊异,我想这毫不会是九牛一毛,由于有不计其数的开辟者(能够大局部是利用MySQL的)都没有受过有关数据库的正轨培训,虽然他们都为客户做过一些开辟,但却对若何为数据库创立恰当的索引所知较少,因而我起了写一篇相干文章的动机。

  最通俗的情形,是为呈现在where子句的字段建一个索引。为便利讲述,咱们先创立一个以下的表。

  CREATE TABLE mytable (
     id serial primary key,
     category_id int not null default 0,
     user_id int not null default 0,
     adddate int not null default 0
  );

  很复杂吧,不外关于要申明这个成绩,已足够了。假如你在查询经常用相似以下的语句:

   SELECT * FROM mytable WHERE category_id=1;

  最直接的应对之道,是为category_id创立一个复杂的索引:

   CREATE INDEX mytable_categoryid
     ON mytable (category_id);

  OK,弄定?先别乐意,假如你有不止一个选择前提呢?例如:

   SELECT * FROM mytable WHERE category_id=1 AND user_id=2;

  你的第一反响多是,再给user_id创立一个索引。欠好,这不是一个最好的办法。你可以创立多重的索引。

  CREATE INDEX mytable_categoryid_userid ON mytable (category_id,user_id);

  注重到我在定名时的习气了吗?我利用"表名_字段1名_字段2名"的体例。你很快就会晓得我为何如许做了。

  如今你已为恰当的字段创立了索引,不外,仍是有点不宁神吧,你能够会问,数据库会真正用到这些索引吗?测试一下就OK,关于大多半的数据库来讲,这是很轻易的,只需利用EXPLAIN号令:

  EXPLAIN

   SELECT * FROM mytable
    WHERE category_id=1 AND user_id=2;

   This is what Postgres 7.1 returns (exactly as I expected)

   NOTICE: QUERY PLAN:

   Index Scan using mytable_categoryid_userid on
     mytable (cost=0.00..2.02 rows=1 width=16)

  EXPLAIN

以上是postgres的数据,可以看到该数据库在查询的时分利用了一个索引(一个好入手下手),并且它利用的是我创立的第二个索引。看到我下面定名的优点了吧,你即刻晓得它利用恰当的索引了。  聪明的你,显然已经逐渐的开悟了,慢慢的理解了编程的概念,那么祝贺你,你已经迈出了成功的第一步。
飘飘悠悠 该用户已被删除
沙发
发表于 2015-2-4 11:14:16 | 只看该作者
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
不帅 该用户已被删除
板凳
发表于 2015-2-5 04:46:07 | 只看该作者
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
老尸 该用户已被删除
地板
发表于 2015-2-11 04:32:07 | 只看该作者
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
分手快乐 该用户已被删除
5#
发表于 2015-2-14 05:16:42 | 只看该作者
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
只想知道 该用户已被删除
6#
发表于 2015-3-3 07:29:11 | 只看该作者
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
再现理想 该用户已被删除
7#
发表于 2015-3-7 07:44:48 | 只看该作者
兴趣是最好的老师,百度是最好的词典。
乐观 该用户已被删除
8#
发表于 2015-3-11 05:04:16 | 只看该作者
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
莫相离 该用户已被删除
9#
发表于 2015-3-11 17:14:23 | 只看该作者
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
谁可相欹 该用户已被删除
10#
发表于 2015-3-19 02:54:14 | 只看该作者
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
深爱那片海 该用户已被删除
11#
发表于 2015-3-27 02:04:44 | 只看该作者
基础有没有对学习php没有太大区别,关键是兴趣。
第二个灵魂 该用户已被删除
12#
发表于 2015-3-29 15:05:17 | 只看该作者
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
小妖女 该用户已被删除
13#
发表于 2015-4-3 03:25:55 | 只看该作者
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
透明 该用户已被删除
14#
发表于 2015-4-4 03:51:01 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
精灵巫婆 该用户已被删除
15#
发表于 2015-4-4 11:14:41 | 只看该作者
实践是检验自己会不会的真理。
蒙在股里 该用户已被删除
16#
发表于 2015-4-9 04:02:15 | 只看该作者
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
活着的死人 该用户已被删除
17#
发表于 2015-4-11 11:28:18 | 只看该作者
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
山那边是海 该用户已被删除
18#
发表于 2015-4-12 06:18:42 | 只看该作者
爱上php,他也会爱上你。
小魔女 该用户已被删除
19#
发表于 2015-4-12 08:20:19 | 只看该作者
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
变相怪杰 该用户已被删除
20#
发表于 2015-4-21 15:27:47 | 只看该作者
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 20:40

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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