mysql分页优化(mysql分页)

导读大家好,阿林来为大家解答以上问题,mysql分页优化,mysql分页很多人还不知道,现在让我们一起来看看吧!1、MySQL分页方法2、Mysql的分页似

大家好,阿林来为大家解答以上问题,mysql分页优化,mysql分页很多人还不知道,现在让我们一起来看看吧!

1、MySQL分页方法

2、Mysql的分页似乎一直是个问题。有什么方法可以优化MySQL分页?下面总结一些Mysql分页方法。让我们看一看。

3、方法一:直接使用数据库提供的SQL语句。

4、语句风格:在MySQL中,可以使用以下方法:SELECT * FROM表名LIMIT M,n。

5、适配场景:适用于数据较少的情况(元组百/千)。

6、原因/缺点:全表扫描会很慢,某些数据库结果集会不稳定地返回(例如,一次返回1,2,3,另一次返回2,1,3)。Limit限制从结果集的M位置取出N个输出,其余的被丢弃。

7、2.建立主键或唯一索引,并使用索引(假设每页10个条目)。

8、语句风格:在MySQL中,可以使用以下方法:

9、代码如下:

10、SELECT * FROM id _ PK(pagenum * 10)限制m的表名。

11、适应场景:适用于大数据(数万元组)的情况。

12、原因:索引扫描会很快。有朋友提出,由于数据查询不是按pk_id排序,会出现数据缺失的情况,所以唯一的办法就是方法3。

13、方法3:基于索引重新排序。

14、样式:在MySQL中,可以使用以下方法:SELECT * FROM表名where id _ PK(pagenum * 10)order by id _ PK ASC limit m。

15、适配场景:适用于数据量大(数万元组)的情况。ORDERBY后的列对象最好是主键或唯一的,这样可以通过使用索引消除ORDER BY操作但结果集是稳定的(稳定性的含义见方法1)。

16、原因:索引扫描会很快。但是MySQL的排序操作只有ASC没有DESC(DESC是假的,以后会做真正的DESC,很期待)。

17、4:使用基于索引的prepare(第一个问号表示pageNum,第二个表示每页的元组数)

18、语句风格:在MySQL中,可以使用以下方法:

19、代码如下:

20、prepare stmt _ name from select * from表名其中id_pk(?* ?)按id_pk排序

21、ASC限制M .

22、适应场景:大量数据。

23、原因:索引扫描会很快。prepare语句比一般的查询语句稍快一些。

24、方法:利用MySQL支持顺序操作,通过索引快速定位部分元组,避免全表扫描。

25、例如,读取第1000行到第1019行的元组(pk是主键/唯一键)。

26、代码如下:

27、SELECT * FROM your _ table WHERE PK=1000 ORDER BY PK ASC LIMIT 0,20 .

28、方法6:使用‘子查询/连接索引’快速定位元组,然后读取元组。原因和方法5一样。

29、例如,(id是主键/唯一键,蓝色字体的变量):

30、使用子查询的示例:

31、代码如下:

32、SELECT* FROMyour_table WHEREid=

33、(从您的_表订单中选择

34、BYid desc limit($ page-1)* $ pagesize order BYid desc

35、限制$页面大小

36、使用连接示例:

37、代码如下:

38、SELECT * FROMyour _ table ASt1

39、JOIN(select id from your _ table order by

40、id desc limit($ page-1)* $ pagesize as T2

41、在哪里

42、t1 . id=T2 . id order by t1 . id desc limit $ pagesize;

43、方法7:存储过程类(最好集成上述方法5/6)

44、语句风格:不再给出。

45、适应场景:数据量大,推荐方法。

46、原因:将操作封装在服务器中相对更快。

47、方法八:消极法

48、网上有人撰文使用SQL _ CALC _发现_行。无感,不要模仿。

49、基本上,出于同样的原因,它可以扩展到所有数据库。然而,方法5不能扩展到其他数据库。扩展的前提是其他数据库支持按操作排序,可以直接按索引排序。

本文到此结束,希望对大家有所帮助。

免责声明:本文由用户上传,如有侵权请联系删除!