美文网首页
无标题文章

无标题文章

作者: shhdjjj | 来源:发表于2017-03-15 14:17 被阅读6次

    http://database.51cto.com/art/201407/445934.htm

    1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。

    2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描

    selectidfromtwherenumisnull

    最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库.

    备注、描述、评论之类的可以设置为 NULL,其他的,最好不要使用NULL。

    不要以为 NULL 不需要空间,比如:char(100) 型,在字段建立时,空间就固定了, 不管是否插入值(NULL也包含在内),都是占用 100个字符的空间的,如果是varchar这样的变长字段, null 不占用空间。

    可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:

    selectidfromtwherenum=0

    3.应尽量避免在 where 子句中使用 != 或 <> 操作符,否则将引擎放弃使用索引而进行全表扫描。

    4.应尽量避免在 where 子句中使用 or 来连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行全表扫描,如:

    selectidfromtwherenum=10orName='admin'

    可以这样查询:

    selectidfromtwherenum=10unionallselectidfromtwhereName='admin'

    5.in 和 not in 也要慎用,否则会导致全表扫描,

    6.下面的查询也将导致全表扫描:

    selectidfromtwherenamelike‘%abc%’

    若要提高效率,可以考虑全文检索。

    未完看链接

    相关文章

      网友评论

          本文标题:无标题文章

          本文链接:https://www.haomeiwen.com/subject/zzmlnttx.html