pymysql的增删改查、索引

1.pymysql增删改

    一定要有commit()

2.pymysql查询

    fetchone()

    fetchmany(size)

    fetchall()

3.索引

  作用:约束+加速查询

    普通索引:create index ix_name on 表名(字段名); 

      作用:加速查询

    唯一索引:create unique index un_name on 表名(字段名);

      作用:约束+加速查询

    主键索引:设置主键

    覆盖索引:在索引文件中直接获取数据

      例如:select name from big_data where name = "zhang50000"; 对name字段设置了索引

    索引合并:把多个单列索引一起使用

      select * from big_data where name = "zhang13131" and id = 13131;

    联合索引:

      联合普通索引

      联合唯一索引

      联合主键索引

    最左前缀:

      如果使用组合索引,name email 组合索引之后,查询

      1.name和email    使用索引

      2.name      使用索引

      3.email      不使用索引

      对于同时搜索n个条件时,组合索引的性能好于多个单列索引

      组合索引的性能>索引合并的性能

      对于索引:

        1.创建索引:

            注意事项:

                1.避免使用select *

                2.count(1)或count(列)代替count(*)

                3.创建表时尽量使用char代替varchar

                4.表的字段顺序固定长度的字段优先

                5.组合索引代替多个单列索引(经常使用多个条件查询)

                6.尽量使用短索引(create index ix_title on tb(title(16)));特殊的数据类型text

                7.使用连接(join)代替子查询

                8.连表时注意条件类型需要一致

                9.索引散列(重复少)不适于用索引,例如性别

        2.命中索引

        3.正确使用索引

          注意事项:

            like "%xx"

            select * from userinfo where name like "%al";

          使用函数:

            select * from userinfo where reverse(name) = "zhang333";

          or

            select * from userinfo where id = 1 or email = "[email protected]";

          类型不一致:

            select * from userinfo where name = 999;

          !=:

            select count(*) from userinfo where name != "zhang";

            特别的:如果是主键,则还是会走索引

          >:

            select * from userinfo where name > "zhang";

            特别的:如果是主键或索引是整数类型,则还是会走索引

              select * from userinfo where id > 123;

              select * from userinfo where num > 123;

          order by:

            select * from userinfo order by name desc;

            当根据索引排序时,选择的映射如果不是索引,则不走索引

            特别的:如果对主键排序则还是会走索引

              select * from userinfo order by nid desc;

            组合索引最左前缀:

              然后组合索引为:(name,email);

              name and email   使用索引

              name       使用索引

              email      不使用索引

        对于创建索引,它是真实存在的,占用硬盘空间,尽量不要使用索引

        select * from big_data where id > 2000010 limit 10;

        select * from (select * from big_data where id > 2000020 limit 30) as A order by id desc limit 10;

猜你喜欢

转载自www.cnblogs.com/qq849784670/p/9811238.html
今日推荐