因为表格数据量10w左右 如果查询两次时间较长 所以在做分页的时候想查询一次得到结果和总条数
按照sql_calc_found_rows +found_rows()的写法 可以完成 就是想问一下这个函数会不会因为同时访问而返回错误的数据?
比如 a页面数据共100条 b页面200条 甲刷新a页面 乙刷新b页面 a页面显示的条数会不会被乙的动作影响?
SQL_CALC_FOUND_ROWS
和 FOUND_ROWS()
函数是 MySQL 数据库中按需计算行数的一种方法,它们应该是线程安全的。
在您的情况下,如果您同时进行多个查询并使用 FOUND_ROWS()
函数,MySQL 应该可以正确地区分这些查询并返回准确的最近查询的行数。这意味着,如果在查询 a 页面时使用 SQL_CALC_FOUND_ROWS
,而在查询 b 页面时再次使用 SQL_CALC_FOUND_ROWS
,MySQL 应该能够正确区分这两个查询并返回正确的结果。
另外,SQL_CALC_FOUND_ROWS
和 FOUND_ROWS()
函数是用于在单个 SQL 查询中获取结果总数的,因此,通过使用这些函数,您可以在单个查询中轻松获取所需的数据和总行数,而不需要单独进行第二次查询。
总的来说,SQL_CALC_FOUND_ROWS
和 FOUND_ROWS()
函数是一种非常好的按需计算行数的方法,它们是线程安全的,可以支持并发数据访问,同时也可以提高您的查询性能。