Table of Contents
回复内容:
Home Backend Development PHP Tutorial 单表如何提高Select的效率?

单表如何提高Select的效率?

Jun 06, 2016 pm 08:18 PM
mysql php database Database performance optimization

情景:一个分类页面,因为每页显示的文章数量是固定的,通过设置偏移量来实现分页,大致如下:

<code>SELECT * FROM test WHERE status=1 AND category='mycat' LIMIT 0, 30</code>
Copy after login
Copy after login

在访问量大且偏移量大的情况下,性能不是很理想,而且随着数据量增长也比较快,所以想请教在单表的情况下,如何尽可能地进行优化,希望能提供些思路,谢谢

回复内容:

情景:一个分类页面,因为每页显示的文章数量是固定的,通过设置偏移量来实现分页,大致如下:

<code>SELECT * FROM test WHERE status=1 AND category='mycat' LIMIT 0, 30</code>
Copy after login
Copy after login

在访问量大且偏移量大的情况下,性能不是很理想,而且随着数据量增长也比较快,所以想请教在单表的情况下,如何尽可能地进行优化,希望能提供些思路,谢谢

抛开业务上的优化不谈 你可以做的有 优化表结构尽量能在区分度高的条件字段加索引 常用数据走缓存 数据里大的情况下按时间或id进行分表

mysql可以尝试分区(按月份分区),不是水平分表。

就你这个的情况,增加下联合索引再试试。

<code>ALTER TABLE `tablename`   
  ADD  INDEX `xxx-index` (`status`, `category`);</code>
Copy after login

再根据访问量统计一下 status,category组合中查询频率最高的,做一下缓存(可临时table,也可以直接redis等内存数据库)

我有单表接近6000万,组合条件查询结果在90万数据的情况下,翻页还算是正常的,当然可能访问量没你的大。

具体情况要具体分析哈,explain下 扫表的情况,如果表太大用limit比较吃力的时候,可以分表,也可以redis辅助一下

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian

CakePHP Date and Time CakePHP Date and Time Sep 10, 2024 pm 05:27 PM

CakePHP Date and Time

CakePHP File upload CakePHP File upload Sep 10, 2024 pm 05:27 PM

CakePHP File upload

CakePHP Routing CakePHP Routing Sep 10, 2024 pm 05:25 PM

CakePHP Routing

CakePHP Project Configuration CakePHP Project Configuration Sep 10, 2024 pm 05:25 PM

CakePHP Project Configuration

Discuss CakePHP Discuss CakePHP Sep 10, 2024 pm 05:28 PM

Discuss CakePHP

How to fix mysql_native_password not loaded errors on MySQL 8.4 How to fix mysql_native_password not loaded errors on MySQL 8.4 Dec 09, 2024 am 11:42 AM

How to fix mysql_native_password not loaded errors on MySQL 8.4

CakePHP Quick Guide CakePHP Quick Guide Sep 10, 2024 pm 05:27 PM

CakePHP Quick Guide

See all articles