国语自产精品视频在线看:您身边最放心的安全下载站! 最新软件|热门排行|软件分类|软件专题|厂商大全

国语自产精品视频在线看

技术教程
您的位置:首页数据库类Oracle → ORACLE SQL语句优化技术分析

ORACLE SQL语句优化技术分析

我要评论 2009/04/16 01:43:31 来源:国语自产精品视频在线看 编辑:佚名 [ ] 评论:0 点击:1449次

    操作符优化【yōu huà】🚖

    IN 操作符【cāo zuò fú】😉

    用IN写出来的SQL的优点是比较【shì bǐ jiào】🔚容易写及清晰🥋易懂,这比较【zhè bǐ jiào】👡适合现代软件【dài ruǎn jiàn】开发的🧦风格【fēng gé】。

    但是用💀IN的【de】💔SQL性能总【xìng néng zǒng】🚻是比较【shì bǐ jiào】低的【dī de】💔,从ORACLE执行的【de】➰步骤来分析用IN的【de】💔SQL与不用IN的【de】💔SQL有以下区别🍈:

    ORACLE试图将其转换【qí zhuǎn huàn】成多个【chéng duō gè】表的【biǎo de】🈁连接,如果转🈺换不成💪功🤧则先执行IN里面的🌼子查询【zǐ chá xún】🎣,再查询【zài chá xún】🐚外层的【wài céng de】🈁表记录【biǎo jì lù】,如果转🈺换成功🤧则直接【zé zhí jiē】🔷采用多个表的【biǎo de】🈁连接方式查询。由此可🛋见用🏢IN的🈁SQL至少多了一个转换的🥋过程。一般的🍳SQL都可以【dōu kě yǐ】转换成【zhuǎn huàn chéng】功🤧,但对于【dàn duì yú】含有分组统计等方面【děng fāng miàn】的🈁SQL就不能转换了。

    推荐方🏔案😲:在业务密集的【mì jí de】SQL当中尽量不采用【yòng】IN操作符【cāo zuò fú】🐹。

    NOT IN操作符【cāo zuò fú】🎉

    此操作【cǐ cāo zuò】🙅是强列推荐不【tuī jiàn bú】使用的,因为它【yīn wéi tā】不能应用表的🤕索引🎉。

    推荐方案【àn】:用NOT EXISTS 或【huò】🥇(外连接+判断为空【kōng】😅)方案【àn】代🧥替

    <> 操作符(不等于【bú děng yú】📒)

    不等于操作符🐃是永远不会用到索引的【de】,因此对📻它的处【tā de chù】🙆理只会产生全【chǎn shēng quán】➡表扫描【biǎo sǎo miáo】。

    推荐方案:用其它【yòng qí tā】相同功🥍能的操🐤作运算【zuò yùn suàn】📐代替,如【rú】

    a<>0 改为【gǎi wéi】🍈 a>0 or a<0

    a<>’’ 改为【gǎi wéi】🈶 a>’’

    IS NULL 或【huò】IS NOT NULL操作🤠(判断字🎾段是否【duàn shì fǒu】为空)

    判断字【pàn duàn zì】段是否为空一般是不🤳会应用【huì yīng yòng】🍤索引的【de】,因为【yīn wéi】B树索引是不索🗨引空值🦌的【de】。

    推荐方🎇案【àn】:

    用其它相同功🐠能的操💸作运算【zuò yùn suàn】代替【dài tì】,如

    a is not null 改为 a>0 或🤷a>’’等【děng】。

    不允许字段为空,而用一【ér yòng yī】🕗个缺省🧝值代替空值【kōng zhí】💈,如业扩【rú yè kuò】📼申请中状态字段不允🧐许为空【xǔ wéi kōng】,缺省为【quē shěng wéi】申请。

    建立位🏦图索引(有分区的表不能建,位图索【wèi tú suǒ】引比较难控制【nán kòng zhì】,如字段值太多【zhí tài duō】索引会使性能🚖下降,多人更【duō rén gèng】🈚新操作【xīn cāo zuò】🧟会增加🚁数据块锁的现象【xiàng】💢)

    > 及 < 操作符【cāo zuò fú】👭(大于或小于操🧜作符【zuò fú】👭)

    大于或♏小于操作符一般情况下【qíng kuàng xià】是不用调整的【de】,因为它有索引【yǒu suǒ yǐn】😀就会采🚚用索引😀查找,但有的【de】情况下【qíng kuàng xià】可以对【kě yǐ duì】它进行【tā jìn háng】优化,如一个【rú yī gè】🔃表有【biǎo yǒu】💍100万记录【wàn jì lù】🅾,一个数【yī gè shù】值型字🍬段【duàn】🔟A,30万记录【wàn jì lù】🅾的【de】A=0,30万记录【wàn jì lù】🅾的【de】A=1,39万记录【wàn jì lù】🅾的【de】A=2,1万记录【wàn jì lù】🅾的【de】A=3。那么执行A>2与🏚A>=3的【de】效果就有很🏂大的【de】区别了,因为A>2时ORACLE会先找🐘出为【chū wéi】2的记录【de jì lù】🎦索引😀再进行比❤较🌹,而🐑A>=3时ORACLE则直接【zé zhí jiē】找到=3的记录【de jì lù】🎦索引😀。

    LIKE操作符【cāo zuò fú】🛏

    LIKE操作符可以应用【yòng】🌨通配符查询【chá xún】,里面的【lǐ miàn de】通配符组合可能达到几乎是任意的查询【chá xún】,但是如【dàn shì rú】🐟果用【guǒ yòng】🌨得不好则♿会产生🍒性能上🍃的问题,如📷LIKE ‘%5400%’ 这种查【zhè zhǒng chá】👊询不会😓引用索【yǐn yòng suǒ】💔引【yǐn】,而LIKE ‘X5400%’则会引【yǐn】用【yòng】🌨范围索引【yǐn】。一个实际例子:用【yòng】🌨YW_YHJBQK表中营【biǎo zhōng yíng】🙍业编号✅后面的【hòu miàn de】户标识【hù biāo shí】号可来查询营【chá xún yíng】业编号✅ YY_BH LIKE ‘%5400%’ 这个条【zhè gè tiáo】件会产【jiàn huì chǎn】生🍒全表扫描,如果改😃成YY_BH LIKE ’X5400%’ OR YY_BH LIKE ’B5400%’ 则会利用【yòng】🌨YY_BH的索引【yǐn】进行两🌡个范围【gè fàn wéi】的查询【chá xún】,性能肯💭定大大🤪提高【tí gāo】🔓。

关键词:ORACLE,SQL语句

阅读本文后您有什么感想? 已有 人给出评价!

  • 2 欢迎喜欢
  • 1 白痴
  • 1 拜托
  • 1 哇
  • 1 加油
  • 1 鄙视