范文一:提高效率的方法
飞越图书下载论坛:http://pk2009.5d6d.com
提高效率的方法
一、准备就绪:
为了获得成功,一个人必须具备这样的素质:拥有明确的目标,知道自己想要得到什么,同时有实现一目标的强烈愿望。------拿破仑.希尔成功的一个重要法则就是:将想法付诸笔端。
只有区区3%的成年人有自己明确的目标,并且以书面方法将目标表达出来。和那些教育程度、工作能力与之相当、甚至比他们更高一筹的人相比,前者取得的成就常常是后者的5—10倍。导致这种差异的原因何在,问题就出在,大多数人出于各种原因,不愿意花费一丁点儿时间,将他们想要获得的东西写下来。
通过坚持实施简单易行的七个步骤,短短几年,甚至几个月的时间里,会有很大进步:
第一步:确定自己究竟想要什么。
最糟糕的时间使用方法:将毫无意义的事情做理十分圆满。
期蒂芬.柯维曾经说过这样一句话:“在你开始攀登成功的阶梯之前,首先要确定它有没有搭错地方。
第二步:将自己的目标写下来。
没有以书面形式描述出来的目标将是模糊的、混乱的,它最终会使你迷失方向,甚至造成不计其数的错误。
第三步:为自己的目标设定一个最后期限。
第四步:将实现目标要做的所有事情列出来。
第五步:整理这份清单,使之变成一份可实施的计划。
花上几分钟时间,考虑一下哪件事情更重要,那些情情可以推后一点,以及先做什么,后做什么,根据轻重缓急来安排处理事情的顺序。
第六步:根据自己制定的计划立即采取行动。
第七步:每天做一些能够接近自己目标的事情。
奋勇向前~一旦开始行动,就要努力保持积极的状态,而不要半途而废。仅仅凭借这种决心和自律精神,你就能成为同辈中工作高效、事业成功的精英。
每天温习一遍为自己制定的目标。每天早晨开始工作时,先着手处理那些最重要的工作----这样做有助于你实现最重要的目标。
二、精心计划每一天
1
飞越图书下载论坛:http://pk2009.5d6d.com
计划就是把未来变成现在,这样你现在就可以未雨绸缪。
-----艾伦.拉肯
你一定听说这样一个老掉牙的问题:“怎么才能吃掉一头大象,”答案当然是:“一口一口地吃~”
也就是说,当我们面对一个工作或任务时,首先要将事情分解成一个个具体的步骤,然后从第一步开始着手。
无论做什么,都先列出一份清单,每当想起一件新的工作,着手之前先把它加到清单上,如果你坚持这么做,那么一开始你的工作效率就能提高25%,甚至更多。
你需要为不同的目标制定不同的计划。首先,你应该制作一张总表,在这份表上将自己能够想到的、憧憬和期望的每一件事都写下来。只有这样,你才能记下脑海中闪现的每一个念头,以及要面对的每一项任务或责任。之后,你可以对这份总表分门别类地进行整理。
个人工作效率中最重要的法则是10/90定律:工作前花10%的时间于制定计划,在工作过程中将节约90%的时间。只需要尝试一次,你就能证明它是否有效。
三、随时应用80/20法则
只要合理使用,我们永远有充足的时间。
--约翰.沃尔夫冈
80/20法则是时间管理和人生规划中最重要的概念之一。它是由意大利著名经济学家维尔弗雷德.帕累托发现的。帕累托注意到,社会上的人似乎很自然地分为两大类,一类被他称为“举足轻重的少数人”,另外一类则是“无足轻重的多数人。”前者是金钱和地位方面声名显赫,约占总人数的20%,后者生活在社会底层,约占80%。
如果你手边有20%重要的工作,就决不要先去做那80%微不足道的事情。
开始工作前,不妨先问问自己:“这个任务是属于那20%的高价值部分呢,还是属于剩下的80%的低价值部分,”
做事有方的人总是先处理那些最重要的事情。无论多少困难,他们都会强迫自己吃掉那只青蛙。结果,他们总卓尔不群,遥遥领先于一般人,他们比芸芸众生更快乐。这也应该成为你工作和生活的方式。
四、三思而后行
人的伟大与成就,依其将力量投注于某特定方向的程度而定。
----奥里森.斯韦特.马登
哈佛大学的爱德华.班菲尔德博士经过50余年的研究,得出这样一个结论:“是否具有“长期远
2
飞越图书下载论坛:http://pk2009.5d6d.com
景”,是准确判断美国社会和经济发展程度与水平的一个最为精确的指标。
成功人士对自己的未来都有一个清晰的打算,他们能够设想未来,年、,,年甚至,,年的情景。所以,他们总是对自己当前的选择与行为做细致的分析,以确保它们与自己的长远目标协调一致。
成功者往往是那些愿意推迟享受、在短期内做出牺牲的人。从长远的角度来看,他们能够获得丰厚的回报。相反,失败的人往往只看到眼前利益,追求短暂的满足,而很少顾及未来。
一位成功的励志家演说家,曾经说过一句著名的话:“失败者只想缓解自己的压力,成功者则致力于实现个人目标。”比如:每天清晨早早去公司上班,定期阅读图书杂志,了解自己从事领域的最新动态,参加各种培训班以提高自己的工作技能,以及专注于能够体现个人价值的重要工作。相反,最后一分钟才走进办公室,上班时间看报纸、喝咖啡、与同事聊天?..这些行为也许能给人带来短暂的快乐,但是从长远来看,却会令职位长期不变,工作业绩平平,久而久之,你整个人就会产生一种挫折感。
五、使用,,,,,法。
成功的首要法则是专心致志,就是把所有的精力集中在一点上,然后径直向目标挺进,既不向左看,也不向右看。
――――威廉(马修斯
,,,,,法是一种极为有效的设置优先事件的方法,这种方法每天都可以使用。它极为简单,却非常有效。依靠这种方法,你能成为所在领域内最能干,最高效的人。简单易行是这一方法的显著特点:
先在纸上列出你第二天要做的所有事情,确保自己能够随时看到它们。
然后,在开始采取行动之前,在每一项前面分别标上,、,、,、,、,。标有,的项目是非常重要的事情,你必须迅速地完成它。如果这样的事不止一项,那么,你应该分别用,,、,,、,,这样的符号来区分它们。任务,,是你要立刻吃掉的最大、最丑陋的那只青蛙。
标有,的项目是你应该做的事情,但是这些事情的后果并不十分严重。
标有,的项目是做起来轻松愉快、地位却无足轻重的事情。
标有,的项目可以委派给别人做的事情。
标有,的项目是完全可以取消不做的事情
六、专注于最重要的工作。
一个人向着目标全力以赴的过程,就是他解决问题的能力成倍增长的过程。――――皮尔一旦确定了自己的主要职责范围,接下来,你就该对自己的优势和劣势进行分析了。你的强项是什么,弱项又是什么,你擅长哪些方面的工作,哪些方面你比较薄弱,
你工作中最薄弱的那个环节,决定了你发挥自己能力的最大限度。
3
飞越图书下载论坛:http://pk2009.5d6d.com
在工作中造成拖沓和失误的主要原因是,人们总是避免去做那些自己并不擅长的工作。面对困难,他们不是想方设法提高自己解决问题的能力,而是干脆采取逃避政策,结果只能是雪上加霜。
与此相反的是,你在某一领域内做得越出色,你的干劲儿就越足,决心就越大,克服拖沓、迅速完成任务的能力也就越强。
不过你无须担忧,任何工作技能都是可以通过学习不掌握的。如果别人能够在某一领域内表现出色,那就证明你也一定能够做到,只要你有这个决心。
克服拖沓、迅速完成任务的一个最好办法,就是成为在工作上数一数二的人物。在你的人生目标中,这是一个应该受到特别重视的部分。
七、效率是被逼出来的
全神贯注的确切含义就是,把全部注意力集中在一件事情上的能力。------科马尔“你永远没有足够的时间做完所有的事情,但是你总是有足够的时间去做最重要的事情。”
为了让自己的精力总能集中在日程表里最重要的项目上,你可以经常思考这样三个问题。
第一个问题是:“对我而言,什么是最有价值的事情,”
第二个问题是:“什么事情只能由我来做,而且这件事关系重大,”
第三个问题是:“此时此刻,怎样才能最有效地利用我的时间,”也就是说:“这一刻,我最大的青蛙是什么,”这是时间安排方面最重要的一个问题,想要克服拖沓、提高自己的工作效率,你必须认真思考这个问题。
只做最重要的事情,决不做不重要的事情。歌德曾经说过:“最重要的事情永远不能向最不重要的事做出让步。”
对以上三个问题的回答越准确,你就越容易确定优先事件,进而避免拖沓,集中精力迅速处理那些最重要的工作。
八、做好准备工作
无论你的能力有多大,你永远有更多更好的潜力可待发掘。
----詹姆斯
克服拖沓、提高做事效率最好的方法,就是在开始做事之前,把一切都准备就绪。如果准备得很充分,你就像弦上之箭,蓄势待发。办需要一点点动力,你就可以迅速着手处理最重要的工作了。
首先,你可以清理一下办公桌,使桌面上只摆放和你需要最先完全的任务有关的东西。如果有必要的话,你可以把所有可能用到的东西都放在地板上,或者放在你身后的桌子上。把与工作相关的所有文件,如信息、报告、资料等,全部收集在一起,然后,把它们统统放在你身边,这样,在整个工作过程中,用不着站起来,或者走很远,你就能拿到自己所需要的东西。
4
飞越图书下载论坛:http://pk2009.5d6d.com
办事效率最高的人不惜花费时间,为自己打造一个合适的办公环境,从而把把工作变成一种享受。在开始工作之前,你的桌面和房间越干净、越整齐,你的心情就越愉快,处理复杂事务的动力也越充足。
当一切准备就绪、你坐下来开始工作的时候,一定要表现出效率很高的样子。挺直腰杆,上身向前倾,后背离开椅子的靠背。从心底里把自己看成一个能干、高效、表现出色的人。
九、认真完成家庭作业
无论你从事什么样的工作,提供比预期更多、更好的服务,都是确保自己获得成功的惟一方法。
----奥格.曼迪诺
正如得教练帕特.赖利所说:“不进步就意味着退步。”
在所有关于时间安排的技巧中,最重要的一条就是:“在自己的领域内精益求精。个人生活方面的完善和工作技能的改进,是节约时间最有效的方法之一。
在任何一个领域,是想获得成功,不断学习都是最起码的要求。
每天至少要花一小时进行阅读,以了解业内最新动态。每天早一点起床,用多出来的时间浏览相关的文件或书籍,这样有助于你获得提高工作质量与效率的有益信息。
参加那些提高自己工作技能有帮助的各种课程或者讲座。参加业内的研讨会和业务会议,更不要错过高水平的培训和讲习。坐在前排并认真做笔记。
最后,别忘了在开车时收听那些录音带上的内容。
学识越渊博,你就越自信,对自己的工作就越有把握。同样,你做得越多,任务完成得越出色,你的能力也就越强。
更多精品小说 股票 软件 美图 学习资料 经济管理 电子书 下载
点击地址 飞越图书下载论坛 http://pk2009.5d6d.com
Email: hejlchen@163.com
不定期更新电子书软件下载目录,如需要下载。点出 下载地址01 下载地址02
5
范文二:提高效率的方法
1. 若可以替代的话,尽可能使用前缀操作符代替后缀操作符,如利用++i来代替i++,因为后
缀操作符会产生一个临时变量,并且涉及到复杂的拷贝复制等。
2. 对于乘法操作尽可能的利用位运算,如b= a * 16可以改写为b = a
率要比乘法以及除法的效率高。
3. 一个很好的交换两个数的方法:a = a^b; b = a^b; a = a^b;既可以将变量a与变量b进行
交换,即消除了交换变量值时所用的临时变量,同时提高了效率。
4. 在for循环中for(int i = 0; i != 100; ++i) 尽可能的使用 != 号而不是
用
5. 在C++中变量初始化的时候尽量使用int i(0);而不是int i = 0;的方式来给变量初始化。
6. 使用memset(),memcpy(),memcmp()来代替strcpy(),strcmp()等函数。
7. 使用snprintf()来代替sprintf()函数,永远也不要用sprintf()函数。
8. 使用fgets()函数来代替gets()函数,放置输入的字符串太长而引起内存泄露。
9. 所有定义的*.h的头文件都必要加上#ifndef #define …. #endif这样的结构,从而避免头
文件被重复引用,而造成程序出错。
10. 定义结构体时,通常在前面加上typedef形成typedef struct{ } std;这样的结构。这样给
结构体起个别名,使结构体更加清晰。
11. 所有的常数都应该用宏定义,如 #define OK 1 这样的方式,而不是直接使用1,从而防
止“魔数”的发生,而switch…case语句则采用enum{ }; 来避免“魔数”。
12. 合理的使用register以及 inline函数对程序进行优化,对于不发生变化的常量一定要加
const关键字,从而避免常量被修改。
13. 对于那些只需要做一次计算的操作,要提到循环的外面进行操作,从而避免每次循环都进
行一次不必要的计算。如for(int i = 0; i != strlen(a); ++i);中的strlen(a)要提到for循环的外面。即int Len = strlen(a); for(int i = 0; i != Len; ++i);这样stelen(a)仅运行了一次。
14. 对于变量定义的位置问题,尽量要做到“直到非定义不可的时候才定义”这样可以有效的
减小该变量占用内存的时间,同时也可以避免定义的变量最后没有用到的现象。
15. for循环嵌套循环等,要尽可能的将次数多的循环放置最内层,次数少的循环放在最外层,
这样可以减少计算机进行“切换”,从而提高运行的效率。
16. 对于条件判断如if…else语句以及switch…case语句等要将可能性大的操作放在前面,
这样可以减小计算机对程序进行逐次判断的概率,可以及时的命中操作,从而可以提高效率。
17. 对于矩阵相乘运算,尽可能的不要使用我们通常采用的方式,即 行*列,而是采用依次相
乘然后累加的策略,从而避免内存的未命中的情况。
18. 在调用free()函数释放指针的时候要将指针变量指为空,即free(p); p = NULL;从而防止
指针成为野指针。
19. 对于sizeof()操作符,对操作变量并没有改变,即int i = 10;sizeof(++i); 运行完毕后i
的值仍然为10而不是11 。
20. 对于&&以及||表达式来说,其满足最优原则,即如( f1() == f2() ) && ( f3() == f4() )若第
一个表达式为假的话就不会运行第二个表达式,同理对于||操作符来说,若第一个表达式为真,则不会运行第二个表达式。
21. 对于简单的if…else…操作,尽量使用三目运算符A>B?A:B来替换可以提高程序的运行
效率。
22. 在C++中使用运算符时尽量只用一种运算符,这样当进行运算符重载时,可以减少重载函
数的数目,简化代码。
23. Static关键字修饰局部变量的时候,表征此变量保持不变;在修饰全局变量的时候,表征
此全局变量只能在本模块中反问,对其他模块是不可见的;当修饰一个函数时,也表征着此函数仅在当前模块中有效。
24. Volatile关键字修饰变量表征着此变量将被存于内存中,每次程序访问时都将从新从内存
中提取,而不会被优化。通常用于(1)硬件设备的某些寄存器(如:状态寄存器);(2)某些ISR会访问到的非自动变量(Non-automatic variables);(3)多线程应用中被几个任务共享的变量。
25. 切记extern char *hello;与entern char hello[ ]是两个概念,不要以为数组名是指针就
可以乱用。
范文三:ORACLE提高效率的SQL语句
(1) 选择最有效率的表名顺序 (只在基于规则的优化器中有效 ) :
ORACLE 的解析器按照从右到左的顺序处理 FROM 子句中的表名, FROM 子句 中写在最后的表 (基础表 driving table)将被最先处理,在 FROM 子句中包含多 个表的情况下 , 你必须选择记录条数最少的表作为基础表。如果有 3个以上的表 连接查询 , 那就需要选择交叉表 (intersection table)作为基础表 , 交叉表是 指那个被其他表所引用的表 .
(2) WHERE子句中的连接顺序.:
ORACLE 采用自下而上的顺序解析 WHERE 子句 , 根据这个原理 , 表之间的连接 必须写在其他 WHERE 条件之前 , 那些可以过滤掉最大数量记录的条件必须写在 WHERE 子句的末尾 .
(3) SELECT子句中避免使用 ‘ * ‘:
ORACLE 在解析的过程中 , 会将’*’ 依次转换成所有的列名 , 这个工作是 通过查询数据字典完成的 , 这意味着将耗费更多的时间
(4) 减少访问数据库的次数:
ORACLE 在内部执行了许多工作 : 解析 SQL 语句 , 估算索引的利用率 , 绑定 变量 , 读数据块等;
(5) 在 SQL*Plus , SQL*Forms和 Pro*C中重新设置 ARRAYSIZE 参数 , 可 以增加每次数据库访问的检索数据量 ,建议值为 200
(6) 使用 DECODE 函数来减少处理时间:
使用 DECODE 函数可以避免重复扫描相同记录或重复连接相同的表 .
(7) 整合简单 , 无关联的数据库访问:
如果你有几个简单的数据库查询语句 , 你可以把它们整合到一个查询中 (即 使它们之间没有关系 )
(8) 删除重复记录:
最高效的删除重复记录方法 ( 因为使用了 ROWID) 例子:
DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID)
FROM EMP X WHERE X.EMP_NO = E.EMP_NO);
(9) 用 TRUNCATE 替代 DELETE :
当删除表中的记录时 , 在通常情况下 , 回滚段 (rollback segments ) 用来 存放可以被恢复的信息 . 如果你没有 COMMIT 事务 ,ORACLE 会将数据恢复到删除 之前的状态 (准确地说是恢复到执行删除命令之前的状况 ) 而当运用 TRUNCATE 时 , 回滚段不再存放任何可被恢复的信息 . 当命令运行后 , 数据不能被恢复 . 因
此很少的资源被调用 , 执行时间也会很短 . (译者按 : TRUNCATE只在删除全表适 用 ,TRUNCATE 是 DDL 不是 DML)
(10) 尽量多使用 COMMIT :
只要有可能 , 在程序中尽量多使用 COMMIT, 这样程序的性能得到提高 , 需求 也会因为 COMMIT 所释放的资源而减少 :
COMMIT 所释放的资源 :
a. 回滚段上用于恢复数据的信息 .
b. 被程序语句获得的锁
c. redo log buffer 中的空间
d. ORACLE为管理上述 3种资源中的内部花费
(11) 用 Where 子句替换 HAVING 子句:
避免使用 HAVING 子句 , HAVING 只会在检索出所有记录之后才对结果集进 行过滤 . 这个处理需要排序 , 总计等操作 . 如果能通过 WHERE 子句限制记录的数 目 , 那就能减少这方面的开销 . (非 oracle 中 )on 、 where 、 having 这三个都可以 加条件的子句中, on 是最先执行, where 次之, having 最后,因为 on 是先把不 符合条件的记录过滤后才进行统计,它就可以减少中间运算要处理的数据,按 理说应该速度是最快的, where 也应该比 having 快点的,因为它过滤数据后才 进行 sum ,在两个表联接时才用 on 的,所以在一个表的时候,就剩下 where 跟 having 比较了。在这单表查询统计的情况下,如果要过滤的条件没有涉及到要 计算字段,那它们的结果是一样的,只是 where 可以使用 rushmore 技术,而 having 就不能,在速度上后者要慢如果要涉及到计算的字段,就表示在没计算 之前,这个字段的值是不确定的,根据上篇写的工作流程, where 的作用时间是 在计算之前就完成的, 而 having 就是在计算后才起作用的, 所以在这种情况下, 两者的结果会不同。在多表联接查询时, on 比 where 更早起作用。系统首先根 据各个表之间的联接条件,把多个表合成一个临时表后,再由 where 进行过滤, 然后再计算,计算完后再由 having 进行过滤。由此可见,要想过滤条件起到正 确的作用,首先要明白这个条件应该在什么时候起作用,然后再决定放在那里
(12) 减少对表的查询:
在含有子查询的 SQL 语句中 , 要特别注意减少对表的查询 . 例子:
SELECT TAB_NAME FROM TABLES WHERE (TAB_NAME,DB_VER) = ( SELECT TAB_NAME,DB_VER FROM TAB_COLUMNS WHERE VERSION = 604)
(13) 通过内部函数提高 SQL 效率 . :
复杂的 SQL 往往牺牲了执行效率 . 能够掌握上面的运用函数解决问题的方 法在实际工作中是非常有意义的
(14) 使用表的别名 (Alias):
当在 SQL 语句中连接多个表时 , 请使用表的别名并把别名前缀于每个 Column 上 . 这样一来 , 就可以减少解析的时间并减少那些由 Column 歧义引起的语 法错误 .
(15) 用 EXISTS 替代 IN 、用 NOT EXISTS替代 NOT IN:
在许多基于基础表的查询中 , 为了满足一个条件 , 往往需要对另一个表进行 联接 . 在这种情况下 , 使用 EXISTS(或 NOT EXISTS)通常将提高查询的效率 . 在 子查询中 ,NOT IN子句将执行一个内部的排序和合并 . 无论在哪种情况下 ,NOT IN 都是最低效的 (因为它对子查询中的表执行了一个全表遍历 ). 为了避免使 用 NOT IN ,我们可以把它改写成外连接 (Outer Joins)或 NOT EXISTS.
例子:
(高效) SELECT * FROM EMP (基础表 ) WHERE EMPNO > 0 AND EXISTS (SELECT ‘X’ FROM DEPT WHERE DEPT.DEPTNO = EMP.DEPTNO AND LOC = ‘MELB’) (低效 )SELECT * FROM EMP (基础表 ) WHERE EMPNO > 0 AND DEPTNO IN(SELECT DEPTNO FROM DEPT WHERE LOC = ‘MELB’)
(16) 识别’低效执行’的 SQL 语句:
虽然目前各种关于 SQL 优化的图形化工具层出不穷 , 但是写出自己的 SQL 工 具来解决问题始终是一个最好的方法:
SELECT EXECUTIONS , DISK_READS, BUFFER_GETS,
ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio,
ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run,
SQL_TEXT
FROM V$SQLAREA
WHERE EXECUTIONS>0
AND BUFFER_GETS > 0
AND (BUFFER_GETS-DISK_READS)/BUFFER_GETS <>
ORDER BY 4 DESC;
(17) 用索引提高效率:
索引是表的一个概念部分 , 用来提高检索数据的效率, ORACLE 使用了一个复 杂的自平衡 B-tree 结构 . 通常 , 通过索引查询数据比全表扫描要快 . 当 ORACLE 找出执行查询和 Update 语句的最佳路径时 , ORACLE 优化器将使用索引 . 同样在 联结多个表时使用索引也可以提高效率 . 另一个使用索引的好处是 , 它提供了 主键 (primary key)的唯一性验证 . 。那些 LONG 或 LONG RAW数据类型 , 你可以 索引几乎所有的列 . 通常 , 在大型表中使用索引特别有效 . 当然 , 你也会发现 , 在扫描小表时 , 使用索引同样能提高效率 . 虽然使用索引能得到查询效率的提 高 , 但是我们也必须注意到它的代价 . 索引需要空间来存储 , 也需要定期维护 , 每当有记录在表中增减或索引列被修改时 , 索引本身也会被修改 . 这意味着每 条记录的 INSERT , DELETE , UPDATE将为此多付出 4 , 5 次的磁盘 I/O . 因
为索引需要额外的存储空间和处理 , 那些不必要的索引反而会使查询反应时间 变慢 . 。定期的重构索引是有必要的 . :
ALTER INDEX (18) 用 EXISTS 替换 DISTINCT : 当提交一个包含一对多表信息 (比如部门表和雇员表 ) 的查询时 , 避免在 SELECT 子句中使用 DISTINCT. 一般可以考虑用 EXIST 替换 , EXISTS 使查询更 为迅速 , 因为 RDBMS 核心模块将在子查询的条件一旦满足后 , 立刻返回结果 . 例 子: (低效 ): SELECT DISTINCT DEPT_NO,DEPT_NAME FROM DEPT D , EMP E WHERE D.DEPT_NO = E.DEPT_NO (高效 ): SELECT DEPT_NO,DEPT_NAME FROM DEPT D WHERE EXISTS ( SELECT ‘X’ FROM EMP E WHERE E.DEPT_NO = D.DEPT_NO); (19) sql语句用大写的;因为 oracle 总是先解析 sql 语句,把小写的字 母转换成大写的再执行 (20) 在 java 代码中尽量少用连接符“+”连接字符串! (21) 避免在索引列上使用 NOT 通常, 我们要避免在索引列上使用 NOT, NOT会产生在和在索引列上使用函数相同 的影响 . 当 ORACLE”遇到”NOT,他就会停止使用索引转而执行全表扫描 . (22) 避免在索引列上使用计算. WHERE 子句中, 如果索引列是函数的一部分. 优化器将不使用索引而使用全 表扫描. 举例 : 低效: SELECT ? FROM DEPT WHERE SAL * 12 > 25000; 高效 : SELECT ? FROM DEPT WHERE SAL > 25000/12; (23) 用 >=替代 > 高效 : SELECT * FROM EMP WHERE DEPTNO >=4 低效 : SELECT * FROM EMP WHERE DEPTNO >3 两者的区别在于 , 前者 DBMS 将直接跳到第一个 DEPT 等于 4的记录而后者 将首先定位到 DEPTNO=3的记录并且向前扫描到第一个 DEPT 大于 3的记录 . (24) 用 UNION 替换 OR (适用于索引列 ) 通常情况下 , 用 UNION 替换 WHERE 子句中的 OR 将会起到较好的效果 . 对索 引列使用 OR 将造成全表扫描 . 注意 , 以上规则只针对多个索引列有效 . 如果有 column 没有被索引 , 查询效率可能会因为你没有选择 OR 而降低 . 在下面的例子 中 , LOC_ID 和 REGION 上都建有索引 . 高效 : SELECT LOC_ID , LOC_DESC , REGION FROM LOCATION WHERE LOC_ID = 10 UNION SELECT LOC_ID , LOC_DESC , REGION FROM LOCATION WHERE REGION = “MELBOURNE” 低效 : SELECT LOC_ID , LOC_DESC , REGION FROM LOCATION WHERE LOC_ID = 10 OR REGION = “MELBOURNE” 如果你坚持要用 OR, 那就需要返回记录最少的索引列写在最前面 . (25) 用 IN 来替换 OR 这是一条简单易记的规则, 但是实际的执行效果还须检验, 在 ORACLE8i 下, 两者的执行路径似乎是相同的. 低效 : SELECT?. FROM LOCATION WHERE LOC_ID = 10 OR LOC_ID = 20 OR LOC_ID = 30 高效 SELECT? FROM LOCATION WHERE LOC_IN IN (10,20,30); (26) 避免在索引列上使用 IS NULL和 IS NOT NULL 避免在索引中使用任何可以为空的列, ORACLE 将无法使用该索引.对于单 列索引,如果列包含空值,索引中将不存在此记录 . 对于复合索引,如果每个 列都为空,索引中同样不存在此记录 . 如果至少有一个列不为空,则记录存在 于索引中.举例 : 如果唯一性索引建立在表的 A 列和 B 列上 , 并且表中存在一 条记录的 A,B 值为 (123,null) , ORACLE将不接受下一条具有相同 A,B 值 (123,null )的记录 (插入 ). 然而如果所有的索引列都为空, ORACLE 将认为整 个键值为空而空不等于空 . 因此你可以插入 1000 条具有相同键值的记录 , 当然 它们都是空 ! 因为空值不存在于索引列中 , 所以 WHERE 子句中对索引列进行空值 比较将使 ORACLE 停用该索引 . 低效 : (索引失效 ) SELECT ? FROM DEPARTMENT WHERE DEPT_CODE IS NOT NULL; 高效 : (索引有效 ) SELECT ? FROM DEPARTMENT WHERE DEPT_CODE >=0; (27) 总是使用索引的第一个列: 如果索引是建立在多个列上 , 只有在它的第一个列 (leading column)被 where 子句引用时 , 优化器才会选择使用该索引 . 这也是一条简单而重要的规 则,当仅引用索引的第二个列时 , 优化器使用了全表扫描而忽略了索引 (28) 用 UNION-ALL 替换 UNION ( 如果有可能的话 ) : 当 SQL 语句需要 UNION 两个查询结果集合时 , 这两个结果集合会以 UNION-ALL 的方式被合并 , 然后在输出最终结果前进行排序 . 如果用 UNION ALL替代 UNION, 这样排序就不是必要了 . 效率就会因此得到提高 . 需要注意的是, UNION ALL 将重复输出两个结果集合中相同记录 . 因此各位还是要从业务需求 分析使用 UNION ALL的可行性 . UNION 将对结果集合排序 , 这个操作会使用到 SORT_AREA_SIZE这块内存 . 对于这块内存的优化也是相当重要的 . 下面的 SQL 可以用来查询排序的消耗量 低效: SELECT ACCT_NUM, BALANCE_AMT FROM DEBIT_TRANSACTIONS WHERE TRAN_DATE = ’31-DEC-95’ UNION SELECT ACCT_NUM, BALANCE_AMT FROM DEBIT_TRANSACTIONS WHERE TRAN_DATE = ’31-DEC-95’ 高效 : SELECT ACCT_NUM, BALANCE_AMT FROM DEBIT_TRANSACTIONS WHERE TRAN_DATE = ’31-DEC-95’ UNION ALL SELECT ACCT_NUM, BALANCE_AMT FROM DEBIT_TRANSACTIONS WHERE TRAN_DATE = ’31-DEC-95’ (29) 用 WHERE 替代 ORDER BY: ORDER BY 子句只在两种严格的条件下使用索引 . ORDER BY 中所有的列必须包含在相同的索引中并保持在索引中的排列顺序 . ORDER BY中所有的列必须定义为非空 . WHERE 子句使用的索引和 ORDER BY子句中所使用的索引不能并列 . 例如 : 表 DEPT 包含以下列 : DEPT_CODE PK NOT NULL DEPT_DESC NOT NULL DEPT_TYPE NULL 低效 : (索引不被使用 ) SELECT DEPT_CODE FROM DEPT ORDER BY DEPT_TYPE 高效 : (使用索引 ) SELECT DEPT_CODE FROM DEPT WHERE DEPT_TYPE > 0 (30) 避免改变索引列的类型 .: 当比较不同数据类型的数据时 , ORACLE自动对列进行简单的类型转换 . 假设 EMPNO是一个数值类型的索引列 . SELECT ? FROM EMP WHERE EMPNO = ‘123’ 实际上 , 经过 ORACLE 类型转换 , 语句转化为 : SELECT ? FROM EMP WHERE EMPNO = TO_NUMBER(‘123’) 幸运的是 , 类型转换没有发生在索引列上 , 索引的用途没有被改变 . 现在 , 假设 EMP_TYPE是一个字符类型的索引列 . SELECT ? FROM EMP WHERE EMP_TYPE = 123 这个语句被 ORACLE 转换为 : SE LECT ? FROM EMP WHERETO_NUMBER(EMP_TYPE)=123 因为内部发生的类型转换 , 这个索引将不会被用到 ! 为了避免 ORACLE 对你 的 SQL 进行隐式的类型转换 , 最好把类型转换用显式表现出来 . 注意当字符和 数值比较时 , ORACLE会优先转换数值类型到字符类型 (31) 需要当心的 WHERE 子句 : 某些 SELECT 语句中的 WHERE 子句不使用索引 . 这里有一些例子 . 在下面的例子里 , (1)‘!=’ 将不使用索引 . 记住 , 索引只能告诉你什么存在于表中 , 而不 能告诉你什么不存在于表中 . (2) ‘||’是字符连接函数 . 就象其他函数那样 , 停用了索引 . (3) ‘+’是数学函数 . 就象其他数学函数那样 , 停用了索引 . (4)相同的索引列不能互相比较 , 这将会启用全表扫描 . (32) a. 如果检索数据量超过 30%的表中记录数 . 使用索引将没有显著的效率提 高 . b. 在特定情况下 , 使用索引也许会比全表扫描慢 , 但这是同一个数量级 上的区别 . 而通常情况下 , 使用索引比全表扫描要块几倍乃至几千倍 ! (33) 避免使用耗费资源的操作 : 带有 DISTINCT,UNION,MINUS,INTERSECT,ORDER BY的 SQL 语句会启动 SQL 引擎 执行耗费资源的排序 (SORT)功能 . DISTINCT需要一次排序操作 , 而其他的 至少需要执行两次排序 . 通常 , 带有 UNION, MINUS , INTERSECT的 SQL 语句都 可以用其他方式重写 . 如果你的数据库的 SORT_AREA_SIZE调配得好 , 使用 UNION , MINUS, INTERSECT也是可以考虑的 , 毕竟它们的可读性很强 (34) 优化 GROUP BY: 提高 GROUP BY 语句的效率 , 可以通过将不需要的记录在 GROUP BY 之前过 滤掉 . 下面两个查询返回相同结果但第二个明显就快了许多 . 低效 : SELECT JOB , AVG(SAL) FROM EMP GROUP JOB HAVING JOB = ‘PRESIDENT’ OR JOB = ‘MANAGER’ 高效 : SELECT JOB , AVG(SAL) FROM EMP WHERE JOB = ‘PRESIDENT’ OR JOB = ‘MANAGER’ GROUP JOB ====================查找 bad sql=========================== 本文中我们主要介绍了如何查找运行系统里 bad sql,需要大家注意的是我们需 要根据自己的实际情况来具体分析。而不应该照搬下面介绍的这些方法。当我 们使用这些 SQL 语句时,会对系统表产生分组操作,当然也增大了系统的负载。 希望大家在系统启动了一段时间后,在半夜负载较轻的时间定时 (比如 :一个月 ) 来仔细查看一下。 查找 bad sql的方法 : select * from (select buffer_gets, sql_text from v$sqlarea where buffer_gets >500000 order by buffer_gets desc) where rownum<> 执行次数多的 SQL select sql_text,executions from (select sql_text,executions from v$sqlarea order by executions desc) where rownum<> 读硬盘多的 SQL select sql_text,disk_reads from (select sql_text,disk_reads from v$sqlarea order by disk_reads desc) where rownum<> 排序多的 SQL select sql_text,sorts from (select sql_text,sorts from v$sqlarea order by sorts desc) where rownum<> 分析的次数太多,执行的次数太少,要用绑变量的方法来写 sql set pagesize 600; set linesize 120; select substr(sql_text,1,80) count(*), sum(executions) from v$sqlarea where executions <> group by substr(sql_text,1,80) having count(*) > 30 order by 2; 游标的观察 set pages 300; select sum(a.value), b.name from v$sesstat a, v$statname b where a.statistic# = b.statistic# and b.name = 'opened cursors current' group by b.name; select count(0) from v$open_cursor; select user_name,sql_text,count(0) from v$open_cursor group by user_name,sql_text having count(0)>30; 查看当前用户 &username执行的 SQL select sql_text from v$sqltext_with_newlines where (hash_value,address) in (select sql_hash_value, sql_address from v$session where username='&username') order by address,piece 提高效率的秘诀 译者按:Aaron Swartz是个传奇般的人物,他是一个网络奇才,也是一个资讯自由斗士。此前笔者对他一无所知,但早就受益于他的智慧。大学阶段,笔者很大一部分知识都来自于Google Reader,而RSS是他14岁跟别人共同创作的作品。天妒英才,美国扭曲的知识产权保护制度和司法体系更是将他逼上了绝路。Aaron Swartz自杀是自由互联网世界的一个悲剧,作为Google Reader的深度用户,笔者十分感谢他在RSS中的贡献,因此,笔者把Aaron Swartz的这篇著名的《HOWTO: Be more productive》翻译成中文,向他致敬。 总是有人这样说:“把看电视的时间用于写小说,你早就完成一部大作了!”这确实让人很难反驳,因为把时间用在写书上无疑比看电视更好。然而,这个论调隐含这样一个假设:不同种类的时间是“可互换的”。你可以轻易用看电视的时间来写一部小说。但实际上,并非如此。 时间也是分三六九等的。如果在去地铁站的路上,我发现自己忘带笔记本了,那么就很难利用这段时间写几段小说。工作时,如果总是被打断的时候,你也很难集中精力有效利用时间。有时候,还有心理作用影响时间的质量:当我兴致不错时,就能积极、高效地工作;而身心俱疲时就只能去看电视了。 如果想提高效率,你就一定要遵循以下准则:首先,你必须充分利用每一类型的时间;其次,你得尽量让时间变成优质时间。 有效利用时间 选择值得的工作 寄蜉蝣于天地,渺沧海之一粟。(至少我是这样被教育的)因此为什么要把这短暂的生命浪费在愚蠢的事情上?人们很容易做一些简单的事情,然而你更应该扪心自问:我能否做些更有意义的事情?为什么不去做些更重要的事情呢?你也许很难直面这种诘问,(如果你遵循这个法则的话,就会经常问自己:为什么你不在做这世上最重要的事呢?)然而,每前进的一小步都会提升你的效率。 这并不是说你终生都忙于垂名青史,至少我肯定没有(毕竟,我还在写这篇文章呢)。但它绝对是我衡量生活的标准。 一心三用 另一个常见的误解是:专注于一件事情有利于我们高效完成任务。我认为这是无稽之谈。此时此刻,我正调整姿势、锻炼肌肉、喝着饮料、清理书桌、跟我的兄弟聊QQ,当然我还在写这篇文章。在过去的一天里,我曾为这篇小文做些准备工作、读了一本书、吃了点东西、回复了几封邮件、与朋友们聊天、备份硬盘,还整理了我的阅读清单。而在过去的一周里,我参与了好几个软件项目的开发,读了几本书,研究了几种编程语言,并提出了一些我的看法,等等。 一心三用能够让你在不同品质的时间里都能工作。此外,当你在一件事情上卡住,或者感到无聊时,你可以做些别的事情。(这也给你的头脑一些活动活动的时间) 在一段时间内做多件事情也能够让你更富有创造力。创造力就是能够把在别的领域学到的东西应用于当下的工作中。如果你同时做不同领域的多个项目,你就能借用很多奇思妙想了。 列张清单 同时做多件事情其实没有那么难——更多的人想同时做无穷多件。但如果你试图把它们一股脑记在心里,你脆弱的心灵会马上崩溃。这种同时记住所有要做事情的心理压力简直能把人逼疯。其实解决方法很简单:把他们都写下来。 一旦你有这样的事项清单,你就能按部就班地组织工作了。比如说,我的事项清单是编程、写作、思考、跑腿、阅读、聆听和观察。 其实很多大项目包含一系列工作事项。举个例子,写这篇文章就包括阅读有关拖延症的文章、思考各个章节、遣词造句、发邮件问人问题等。这些事项都是除了写作之外必须执行的实际工作。我们应该合理安排每个事项,这样当你有合适的时间时,就能够不假思索地完成工作。 整合清单与生活 一旦你有了这个事项清单,接下来的问题就变成记得看它,最好无论你要做什么之前都能注意到事项清单。例如,我把最近正在读的书放在桌子上一摞书的最上面。这样每当要读书时,我只需打开最上面的那本。 我也这样处理电影和电视节目。每听到值得一看的电影,我就把它拷贝到我电脑中一个特殊的文件夹里。,每当要看电影时,我就直接打开那个文件夹。 我也想过一些更深入的方法。例如,当我检查博客更新时,就有一个网页带着我“待读”文件夹里的文章弹出来。或者当我休息时,就弹出一个工作小贴士的网页。 提升时间质量 上面的建议已经能够让你充分利用各种时间,然而更重要的是你得让时间变得更优质。很多人把自己的时间浪费在上学或上班这种无聊的事情上。如果你在工作或者上学,显然你应该停止浪费生命。为了进一步提升时间质量,你需要做些别的什么呢? 减少生理限制 随身携带纸和笔 我认识很多有趣的人,他们都随时携带某种口袋笔记本。纸和笔在任何情况下都是可以立即使用的。你可以随时给别人写东西、做笔记、或者涂鸦想法等。我甚至在乘坐地铁时写过一篇完整的文章。 (我过去经常这么做,但现在我随身带着智能机。我不用它发送信息,但智能机能让我随时随地都有阅读材料(电子邮件),它也能把我随时记下的笔记推送到电子邮箱的收件箱,而收件箱里都是必须马上处理的事情。) 避免被打断 对于需要集中注意力的工作,你应该避免被打断。最简单的方法是去个没人打扰的地方。或者你可以跟身边的人约法三章:“当我房间的门是关上的时候不要来找我”或者“我带上耳机时,你就在Q上给我留言”(然后你就可以一直工作到闲下来才去看QQ留言) 你不会希望做得太过份。有时如果遭遇了劣质时间,你就应该去做些别的事情。比如说:去帮别人解决他们遇到的问题就比坐在电脑前刷微博强得多。这就是为什么要约法三章:当你真的无法集中注意力时,你是可以搭把手帮他们做些别的事情。 缓解心理束缚 吃饭,睡觉,锻炼 饿肚子或者疲惫或者焦躁时,你正遭遇劣质时间。解决方法很简单:饿了就吃饭,困了就睡觉,不高兴了就锻炼。我自己有时候也做得不好。我不喜欢找吃的,所以就经常饿着肚子工作,一直干到累得自己也没力气拿食物了。 工作中,人们容易这样对自己说:“我也觉得累了,但现在还不能休息。我还没干完呢!”实际上如果你先小憩一会儿,剩下的劣质时间就会变成优质时间,你的工作效率会更高。而且早晚你都得睡上一觉。 其实我不经常锻炼,似乎我也不是告诫大家要积极锻炼的最佳人选,但我正努力尝试增强锻炼。躺着看书时,我会做仰卧起坐;步行出门时,我往往跑着过去。 与开朗的人为伍 缓解心理束缚非常困难,然而跟开朗的人交朋友对此有益。我发现自己跟Paul Graham或Dan Connolly聊过之后,就更享受工作。他们简直就是在辐射正能量!人们通常认为把自己关在房间里不见外人,就能够开始工作了。但令人泄气的是,这种方式实际上极其低效。 分担工作 即便你的朋友不开朗,跟他一起解决难题也比一个人独自承担强。另一方面,帮你分担工作的朋友也能监督你干活,你不会分心做别的。 拖延症和精神力场 然而,所有的这一切都试图回避一个的问题。那些效率低下的人们的关键原因在于拖延症。每个人都在拖延,并不只有你,这是一个肮脏的小秘密。但这并不意味着你不应该对付拖延症。 拖延是什么?对于外界观察者而言,拖延就像你在做些有趣的事情(比如玩游戏或者刷微博),而非做你应该完成的工作。(这通常会让旁观者觉得你又懒又赖)但真正的问题在于:拖延症的本质究竟是什么? 我曾经花了好长时间来研究这个问题。对此,我最好的描述是你的大脑给任务事项施加了一种精神力场。玩过磁铁的人都知道:同极相斥。移动磁铁时,你能够感受到磁场线的边缘;而如果你把同极磁铁放在一起,磁场会把磁铁相互推离。 精神力场就跟磁场的工作原理一样。我们看不见,但能够感受到它。你越是努力像完成某件事,精神力场就把你往反向推得越远。 正如你不能通过蛮力把两块互斥的磁铁固定到一起一样:你一松手,他们就会分开,我从来没能纯粹的利用意志力来克服精神力场。恰恰相反,你应该足够机灵:只需转动磁极。 那么究竟是什么造成了精神力场?我认为主要有两个原因:一是工作本身难度较大,二是自己被人指派需要工作。 面对困难 分拆工作 工作困难的第一个原因是过于庞大。假设你希望编写一个食谱整理程序。没有人能坐下来马上开始编写代码。创造一个程序只是是目标,而非具体可执行的工作事项。工作应该是具体、特定的一步,能够带你走向目标。像“画一个虚拟窗口能够显示食谱”这种工作就是一个良好的开端。从这一步开始,你知道能做什么了。 当你迈出了第一步,第二步就变得更加清晰。你要构思食谱的构成,做什么样的搜索功能,如何构建食谱数据库等。马到成功,势如破竹。当你全心全力投入可执行的每一步时,难题就变得容易多了。 对于我的每一个大项目而言,我都会思考下一步应该做什么,然后把它们列入分类事项清单中(见上文)。而每当我暂停某个项目时,我都会在清单里写下一步的计划。 简化工作 工作困难的第二个原因是过于复杂。比如:写一本书就看起来很艰巨,所以我们要从一篇文章起步。如果一篇文章也嫌太多,那就先写一段文字。最重要的是你要开始着手做些事情。 一旦起步,你就能够更加准确地评判和理解工作中的困难。改进已有的工作可比从一张白纸做起简单多了。如果你顺利地写出了段落,或许它可以变成一篇文章,然后是一本书。一步接一步,一部宏伟的著作就这样诞生了。 思考难题 通常情况下,一点灵感是解决难题的关键。如果你不了解某个领域,显然你需要做些调研:看其他人是怎么做的,先找到一些感觉;然后试着进一步全面了解该领域。而后,处理一些小问题练练手,检验一下是否掌握要领。 被分配的任务 这是指那些你被要求完成的工作。无数心理学实验证明:当你试图激励别人做事情时,他们就倾向于不合作或者故意做得很差。胡萝卜加大棒这种外在激励似乎杀死了心理学家口中的“内在动机”——你对困难的天然兴趣。(这是社会心理学领域被重复研究、也是被研究得最透彻的领域:有超过70项研究证明奖励会破坏完成任务的兴趣)人们内心深处似乎抵制这种被要求完成的任务。 奇怪的是,这种现象并不仅局限于别人,甚至当你告诉自己要做什么的时候也会出现。如果你告诉自己:“我应该做XX,这是目前最重要的事情”,突然之间,XX就成为世上最艰难的事情。然而,一旦YY成为你当下最该做的事情时,原来的XX就变得可爱起来。 创建虚假任务 由此,我们可以提出一种解决方法:如果你想做XX,就告诉自己要做YY.不幸的是,这样有意骗自己有些困难,因为你知道自己的一举一动。所以,你要更加鸡贼才能骗到自己。 比如让外界分配任务给你。最著名的例子莫过于研究生必须完成的毕业论文,只有完成这个艰难的任务他们才能毕业。因此为了避免写毕业论文,研究生们乐于完成其他困难的任务。 这种虚假的任务必须看起来十分重要(你只有写毕业论文才能毕业!)又庞大(你要完成数百页文章),但实际上不完成也不会死。 不要给自己布置任务 我们很容易说:“好吧,我需要把眼下的一切都放一边,集中精力完成这篇文章。”更糟糕的是,你甚至想用一些奖励收买自己,比如“如果我完成了这篇文章,就吃颗糖果”。但是最糟糕的还是让别人强迫你做。 这三种情况都非常容易发生,我也都用过以上手段激励自己,但完全适得其反。因为你已经是在给自己分配任务了。然后,你的大脑会尽可能逃避这些工作。 把事情变得有趣 我们往往被告知:吃得苦中苦,方为人上人。但实际上解决难题差不多是我最享受的工作了。一个棘手的问题不仅能让你全神贯注地投入其中,更能让你收获解决难题之后美妙的成就感。 所以,驱动自己做事情的秘诀不是说服自己必须要做,而是告诉自己这很有趣。如果它真的很无聊,那你就把它变得有趣。 我第一次认真对待这个问题时,正在读大学。那时候我被要求写论文,其实写论文也不是一件特别难的事情,但它是被强加于我的。谁自愿写那么长地论文以讨论两本书的联系呢?为了让它变得有趣,我就从把论文变成我自己的小笑话开始。我决定用不同的风格写一段段文字,尽我所能地模仿各种各样的言论。(这样做还有上文讨论过的好处:总算迈出了第一步) 使事情变得更有趣的另外一个方法是解决模型问题。例如,与其构建一个Web应用,不如建立一个Web应用的框架模式,然后把该Web应用当作一个模型APP。这样不仅会让任务变得更有趣,工作的成果也往往会更有用。 结论 关于效率确实有很多误区:比如时间是可以替换的,专注做一件事情更高效,自我奖励能提高效率,艰难的工作都是苦逼的,拖延症是不正常的。这些误区的共同本质在于:扭曲你的天性。 对于绝大多数人的绝大多数工作,都是如此。你难道是真的喜欢写无聊的文章或记录毫无意义的备忘录吗?如果社会强迫你这样做,你倾听内心,咆哮出内心的呼喊。 如果你在努力做一些值得为之付出的事情,就更不应该关闭心灵的窗户了。恰恰相反,高效的真正秘密在于倾听身体的声音。饿了就吃,困了就睡,累了就休息,做有趣的事情。这看起来如此简单,没有任何花哨的言语,也不需要坚强的意志力,更不像那些人生导师的忠告。听从内心看起来就像常识,但社会的羁绊使得我们都误入歧途。如果你真的希望变得高效,很简单,是时候转身了。 终于找到治“拖延症”的良方了,分享给大家 来源: 华玉锋的日志 上大学以后,我开始有了拖延的毛病。立下目标无数,但时常却动力奇缺,常常在网上浏览着各色的小说和帖子,或是玩很无聊的弱智在线小游戏,却不愿碰专业书本或文献一下,甚至哪怕d eadline 就在几天之后,只有在deadline 之前一点点时间才会因紧迫感而开始着手学习任务。这样下来,学业上总体来说算是马马虎虎,但却离自己的理想越来越远。总之,就是无法完全地上进,又不愿彻底地堕落。 拖延的基础,实际上是对自身很高甚至不切实际的期望。如果说完成任务是走过一块一人宽、十米长的厚木板,那么当它放在地面上时,几乎人人都可以轻松地走过。但对结果的高期望则像是将这块木板架到了两座高楼间十层楼高的地方,于是我们会害怕掉下去,即害怕失败或害怕成功(比如我有时偷偷希望实验不要成功,这样我就可以不用面对之后更大强度的后续实验,其实是害怕失败的一种变体),于是我们甚至不敢向前迈上一步。而deadlin e 则是身后的一团火,当它离我们足够近时,害怕被烧着的恐惧感战胜了对掉下去的恐惧感,于是我们一下子冲了过去,在deadline 前赶完了任务,尽管质量很难说。 更可怕的是,很多拖延的人(包括我自己)甚至很享受那种deadline 过后突然一下放松的感觉,而且拖延的结果有时反而挺好(比如我本科时写实验报告,如果我拖到最后,我往往可能因为能够和其他人讨论并参考其他人的观点而比我先完成要写得更全面更好)。这种时候,我会在心里表扬自己很有“效率”。同时,长期这样下来,尽管我不愿承认,但我潜意识里确实觉得自己如果花了很多时间成绩却平平,会是一件非常丢脸的事情。于是这一切的一切,都再次强化的拖延—— 即使结果不好,我也可以说,那是因为我没尽全力,如果我真正努力,肯定会结果很好的(心理学上的高自尊人格)。 但我们不能永远靠放火来逼自己走过木板,那样的话,总会有烧着自己的一天;而且,那种压抑的焦虑感和对自己不满意的感觉也并不令人愉快。因此,最好的办法是将木板的高度降低——不要对自己的结果(比如分数)太高的要求,认真完成就好。由于我们的天资和其它能力的限制,也许即使我们竭尽全力也无法像某些出众人物一样做得那么好,但不管怎么样,绝大多数情况下,尽力的结果都会比我们不去努力要来得好得多,不是吗? 对此在豆瓣的那个帖子里有一个非常有趣的方法。那位作者将一篇论文拖了几个月之久都不愿开写,她的心理师让她不要管好坏,以她可以写出的最差的论文为目标写一篇出来作为试验。作者照做了,然后惊讶地发现她写出来的“最差”的文章竟然挺让自己满意的,感觉稍做修改就可以交给导师过目了。当然,有时写出来的初稿和论文要求还是有差距的,比如要求12页但初稿只有5页。这种情况下作者就用了心理师教她的另一个方法:每次工作一个小时,目标是让论文多一页,同样以“最差”为目标。这个方法实际就是大大降低了拖延者做事的心理成本和负担,相当于把“木板”放到了“地面”上。不妨一试。 人的完美倾向,严重点就是完美主义,在拖延中也起了很大作用。当我想起幼时的远大理想并希望为之努力时,我只要想起我的同学中无处不在的“牛人”,便会觉得自己已经浪费了 太多时间,而且别人现在不仅比我强得多,更因为他自身的优势而占有了比我更好的资源,所以我现在即使努力估计也赶不上他了,更别提什么远大的理想了,于是就又开始了拖延。 事实上,这就像是一场马拉松,你在开始因为种种原因落后于别人不少,于是你就开始纠结自己到底有没有跑下去的必要,却不努力去跑,于是被拉得更远。这时,你望着遥远的终点,感觉很绝望,都不想跑下去了。这时,如果你不去看不去想重点,也不去想别人,只看着自己的脚下跑——“管它呢,我先跑过这个小土丘再说。”就这样一个小目标一个小目标地跑,最终你一定会跑到终点线,那时你也许会发现,你并不是最慢的,甚至是很不错的。所以,专注于你努力的过程而非最后的结果,为你认真学习了一个下午或认真做了一个实验而不是最后考试的那个A 或一个漂亮的实验结果而表扬自己,你会发现完成工作其实不怎么难。 另外,专注于当下对拖延者来说也是很需要注意的一个地方。这里说的专注于当下,不是指专注于你现在脑子里的想法和情绪,而是专注于你现在在做的或选择要做的事情。其实,很多拖延的人恰恰就是太过关注自己一时的情绪,比如觉得自己不开心了,得放松一下,上上网……然后就开始了拖延。其实从心理学角度来说,过于关注自己一时的情绪是不懂得推迟满足感的一种表现,就像小孩子想要一个玩具就非要马上得到不可一样,这样的做法会大大削弱一个人的自制力。而且,心理学实验表明,满足自己一时的情绪需求并非最佳策略,从长期角度上来讲,它会降低一个人的自我满足感和幸福感而非增加,想想因为玩乐休闲而拖延了工作后自己的负罪感和焦虑感就知道了。 在这个方面,我个人认为森田疗法的理念是很适用的。具体而言,就是不去理会那些打搅你的情绪波动(比如对自己说:“你要郁闷就郁闷吧,不管你了。”然后就不理会了),顺其自然,专心做你要做的事情。就像一颗小石子投入湖中,会泛起一圈圈涟漪,你若不理,湖面最终会自己平静下来;倘若你过于注意那颗小石子,试图把它捞出来,反而会激起更大的波澜,使湖面不得平静。豆瓣那个帖子的作者提供了一个方法,我觉得也是很有用的:把你当时因为一时情绪想要做的事情(比如上网、玩游戏、看电影、看小说等等)记下来,告诉自己等你做完工作就去做那些事情,然后就专心工作,等到工作结束再去做记下的事情。 此外,不要为未来过度操心 也是专注当下的一个方面。这点很容易理解,我就不在此赘言了。 同时,对于已经发生的不愉快的事情,或是对自己过去行为的不满,面对和接受好了,不必逃避。但面对和接受不是放任自流,而是不再沉浸于自责、痛苦等负面情绪中,客观地更好地理解当下的状况,进而为以后做打算。这一点可以和前文提到的“马拉松”的例子联系起来,只有真正面对和接受了你落后于别人的事实,你才不会为“我想得第一可是却落后别人那么多”之类的想法而纠结,进而才能以现实为基础,踏踏实实地努力去跑。 另外,在看书的时候(当然也有其它时候),很多人都常有“刚才看了好几页却不知道讲了些什么”的“不自主飞翔”的神游体验。对此,养成发现新事物的习惯,像初生的婴儿一样去看世界,是很有好处的。无论在什么环境中,时刻注意那些熟悉的东西有什么变化,比如看书,就可以注意想想这书里讲的和我以前知道的有什么不同又有什么联系、有什么很有意思的地方等等,慢慢地,就能做到专注于当下而不至于迷失。 战胜拖延,追根究底,还是要改变自己的思维方式。这并不容易,但不是不可能。改变思维方式,尤其是改变潜意识,最重要的是要改变自我对话的方式。下面是一些自我对话的t ips (括号里是要丢弃的自我对话方式): 1.我选择/我想要…… (vs. 我必须/我一定得……) 2.这个任务我可以每次做一小步 (vs. 这个任务太大了) 3.我今天要开始做…… (vs. 我今天必须完成……) 4.我也可以是平凡人 (vs. 我必须完美/出类拔萃) 5.我一定要休息娱乐/休息娱乐是正常生活的一部分 (vs. 我没空休息娱乐/休息娱乐就是偷懒) 我想大多数有拖延情况的人也许都还没到严重成“症”的地步,但也或多或少地被它影响了生活,影响了对心中理想的追寻。克服一个问题并不简单,需要自己给自己很多的支持与鼓励,期间也许会有许多的反复,但只要我们的大方向是好的,我们就该肯定自己。 “认识到眼前残酷 (这个词程度太深,但我想不出换什么好)的现实,同时又看到未来的光明与希望。”这是我一直很欣赏的对生活的态度。 谨以此文共勉。^_^ 范文四:提高效率的秘诀
范文五:提高效率的方法