仓酷云

标题: PHP网页编程之为数据库创立索引(一) [打印本页]

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




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2