对于海量数据,查询、更新或插入百万甚至千万级别的数据,一般用什么语句效率比较高?能否三种情况分别列举下,谢谢!

解决方案 »

  1.   

    这个级别的数据:
    #1.要有合适的索引
    #2.你写的SQL要用到这些索引,取决于你的WHERE条件,且筛选的记录要具有高选择性
    #3.SELECT,UPDATE,DELETE的第一步,都需要先查找。INSERT的话,无唯一约束的情况下,一般不会相互阻塞,可并发。
    举个例子简单的例子。TB表,字段ID,NAME,AGE,且3个字段分别有索引。关于索引,注意的地方多了,不是一两句话能说完的
    SELECT * FROM TB WHERE NAME='AAA' --走索引
    SELECT * FROM TB WHERE NMAE LIKE 'AAA%' --走索引
    SELECT * FROM TB WHERE NMAE LIKE '%AAA%' --不走索引
      

  2.   

    除了这些,对于SQL语句本身有什么优化吗比如一次性更新或删除100W条记录,怎么写才最快
      

  3.   

    插入操作“一般”来说对大表也没什么影响,除非你插入的是有很多索引、约束、还要倒序排序等等,不然都从最后插入,但是插入可能会引起“热点”问题。至于update,那基本上就要看查询的速度了,查询的快,update一般都不会慢,不过这也跟表上的索引等东西有关系。至于查询,这学问太深了,没有一种绝对好的写法,不仅要看设计,也要看业务,如果你每次都要全表查询(比如OLAP),那上面没索引可能比有索引更快。