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的数据,可以看到该数据库在查询的时分利用了一个索引(一个好入手下手),并且它利用的是我创立的第二个索引。看到我下面定名的优点了吧,你即刻晓得它利用恰当的索引了。聪明的你,显然已经逐渐的开悟了,慢慢的理解了编程的概念,那么祝贺你,你已经迈出了成功的第一步。 找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。 我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。 因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax 要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。 使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。 兴趣是最好的老师,百度是最好的词典。 首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。 装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。 说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年具体的记不清啦,囧。 基础有没有对学习php没有太大区别,关键是兴趣。 说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。 真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎, 有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。 实践是检验自己会不会的真理。 首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。 如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了, 爱上php,他也会爱上你。 学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql 没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
页:
[1]
2