账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    这个分页查询怎么优化能好一点
    27
    0

    背景:

    <script>方式引入了 vue elementui axios 并非vue-cli项目

    html结构
    `

               <script src="../../Content/Table/js/axios.js"></script>
               
               <div class="pagination">
                <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
                    :current-page="currentPage" :page-size="size" layout="total, sizes,jumper,->,prev, pager, next"
                    :total="100"></el-pagination>
            </div>
            
            
            <script>
        new Vue({
        el: '#app',
        data: function () {
            return {       
                currentPage: 1,
                size: 10,
                form: {
                    roleName: "",
                    value2: "",
                    name: 2,
                    pro: 2
                }
    
            }
        },
       
        methods: {
            //翻页
            handleCurrentChange(currentPage) {
                this.currentPage = currentPage;
                console.log(currentPage);
                let size = this.size;
                params = { currentPage, size }
                window.$query('http://192.168.1.131:81/sys/sysUser/getDataList', params).then(res => {
                    console.log("分页查询返回值2222", res.data);
                }).catch(err => {
                    console.log(err);
                });
            },
            //更改每页条数
            handleSizeChange(size) {
                this.size = size;
                this.currentPage = 1;
                let currentPage = this.currentPage;
                params = { currentPage, size }
                window.$query('/sysUser/getDataList', params).then(res => {
                    console.log("分页查询返回值2222", res.data);
                }).catch(err => {
                    console.log(err);
                });
            },
            //查询
            handleQuery() {
                console.log(this.form);
                let form = this.form;
                window.$query('/sysUser/getDataList', { query: form }).then(res => {
                    console.log("分页查询返回值2222", res.data);
                }).catch(err => {
                    console.log(err);
                });
            },
           
          
        }
    })

    </script>

    `

    axios.js

    `

    (function (win) {
    var Request = axios.create({
        timeout: 10000
    })
    // axios.defaults.headers.token = "";
    
    
    Request.interceptors.request.use((config) => {
        console.log(config);
        return config;
    })
    
    Request.interceptors.response.use((response) => {
        console.log(response);
        return response;
    }, (err) => {
        console.log(err);
        return err;
    })
    
    win.$request = Request;
    
    win.$query = function (url = '', params = null){
        var currentPage = 1;
        var size = 10;
        var queryParams={};
        // console.log(123,params);
        if (params) {
            // 传入查询参数时需要重置currentPage
            currentPage = 1;
            queryParams = Object.assign({}, params);// 缓存查询参数
          }
          var data = Object.assign({}, queryParams, {
            size:params.size,
            currentPage:params.currentPage 
          });
          console.log("全局查询参数",data);
          return $request.post(url, data).then((res) => {
            return res;
          });
    
    
    }

    })(window)
    `

    因为不是脚手架的项目 所以没有办法用mixins方式混入到组件中,目前只能这样写

    想要实现的需求是

    如果有查询条件,给后台传递的参数是
    {
    "currentPage": 1,
    "query": {

    "userName": "lomo",
    "enabled": 1,
    "sex": 1

    },
    "size": 10,
    "sort": {}
    }
    并且 带查询条件查询之后 每次翻页的时候 还需要带着查询条件
    如果没有查询条件
    {
    "currentPage": 1,
    "size": 10,
    }

    但是目前这种写法 有查询条件的时候 currentPage size 都是undefined

    而且感觉写的有点繁琐 希望能精简优化一下

    求教如何改造

    我的想法是 如果axios.js 能访问 html里面 vue data里的size currentPage就好了

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 天下孤言 普通会员 1楼

      优化分页查询是一个复杂的问题,因为它涉及到数据库的性能和优化策略。以下是一些基本的优化建议:

      1. 选择正确的查询结构:使用索引可以帮助你快速查询特定的行,而不是整个表。你也可以考虑使用JOIN语句而不是子查询,以减少查询的时间。

      2. 使用正确的JOIN类型:如果你的查询涉及到多个表的JOIN,那么使用JOIN类型可以帮助你减少查询的时间。例如,使用INNER JOIN而不是LEFT JOIN可以减少查询的时间。

      3. 分组和分页:如果查询的结果是分组的,那么使用GROUP BY语句可以帮助你更快地查询结果。如果查询的结果是分页的,那么使用LIMIT语句可以帮助你限制返回的数据量。

      4. 使用索引:如果你的查询涉及到大量数据,那么使用索引可以帮助你更快地查询数据。你可以为经常用于查询的列创建索引。

      5. 避免全表扫描:全表扫描是一种无效的查询,因为它会扫描整个表来获取结果。相反,你可以使用索引来避免全表扫描。

      6. 使用缓存:如果你的查询经常返回相同的结果,那么使用缓存可以帮助你更快地获取结果。

      7. 优化数据库服务器:如果你的数据库服务器性能不足,那么你可以考虑优化数据库服务器,例如增加硬件资源,调整数据库参数等。

      8. 使用数据库优化工具:有很多工具可以帮助你优化数据库查询,例如MySQL的EXPLAIN语句,SQL Server的EXPLAIN分析器等。

      以上只是一些基本的优化建议,具体的优化策略可能需要根据你的数据库的特性和你的业务需求来定制。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部