Datatables js和查询数php mysql
提前计划“sql\u calc\u found\u rows”被折旧,并使用新的datatables 1.10.18,我有一个问题。对于服务器端处理,您需要反馈总计和过滤后的总计。因此,从我收集的信息来看,我必须对每个请求运行3个单独的查询,这似乎有些过分,但我想不出不这样做如何获取信息Datatables js和查询数php mysql,php,mysql,sql,datatables,Php,Mysql,Sql,Datatables,提前计划“sql\u calc\u found\u rows”被折旧,并使用新的datatables 1.10.18,我有一个问题。对于服务器端处理,您需要反馈总计和过滤后的总计。因此,从我收集的信息来看,我必须对每个请求运行3个单独的查询,这似乎有些过分,但我想不出不这样做如何获取信息 // Grab the data with page offset // for "data" $query1 = 'SELECT .. FROM .. WHERE .. LIMIT ..' // Grab
// Grab the data with page offset
// for "data"
$query1 = 'SELECT .. FROM .. WHERE .. LIMIT ..'
// Grab filtered total which is the total using the "WHERE" without the "LIMIT"
// for "recordsFiltered"
$query2 = 'SELECT COUNT FROM .. WHERE .. '
// Grab the total records without the WHERE
// for "recordsTotal"
$query3 = 'SELECT COUNT FROM ..'
对于复杂的查询和半大型数据集(100k-2mill)记录,以及每次有人在搜索中键入一个字母(每个字母都是他们在一个单词中键入的)或点击列排序和更改页面时都会触发此事件,查询/执行的时间和数量似乎非常疯狂
我是否遗漏了什么,或者这仅仅是使用datatables必须在每个请求中发出3个数据库查询所必需的吗?谢谢。我已经广泛使用了数据表(例如,在一个计费数据库中浏览1000万条记录),您是对的,需要3次查询才能实现您想要的结果,而无需任何优化。如果查询超过1000万个结果是绝对必要的,那么您将需要查看DB分片,因为在100万个记录之后,DB I/O之类的东西开始发挥重要作用 然而,使用一些技巧,您可以在多达一百万条记录的大数据集上实现可接受的用户体验,这些记录几乎可以立即响应。因此,策略是操作DB和草稿查询,这样您就不必每次都要考虑整个记录集。如果有动态反馈(Datatables有),用户总是愿意等待几秒钟,并且他们得到的结果总是他们期望的结果,特别是如果每次搜索时它只返回数百万条记录中的几条记录。少就是多,这是我们的目标 以下是我尝试过的一些行之有效的方法: