Home Database Mysql Tutorial MySQL数据类型的最优选择_MySQL

MySQL数据类型的最优选择_MySQL

Jun 01, 2016 pm 01:34 PM

bitsCN.com

MySQL数据类型的最优选择

 

慎重选择数据类型很重要、为啥哩?可以提高性能、原理如下:

     

     ● 存储(内存、磁盘)、从而节省I/O(检索相同数据情况下)

     ● 计算、进而减负CPU负载

     

     数据类型总体可分三种:数字、字符和时期

     

     ㈠ 数字

     

        ① 分类

 

MySQL数据类型的最优选择_MySQL

 

        ② 为整数类型指定宽度没啥意义、硬说呢、大概也是为了显示字符的个数、人性化点

           因为、对于存储和计算而言、INT(1)和INT(100)是相同的

           

        ③ 对于浮点、建议只指定数据类型、而不要指定精度

        

        ④ 对于定点、尽量只在对小数精确计算时才使用、如存储财务数据

           但天朝某些财务软件在其数据库内使用float作为工资类型

           赤裸裸的资本家的丑恶展现、鄙视!!!

           

        ⑤ 在数据量较大时、建议把实数类型转为整数类型

           原因很简单:

             ● 浮点不精确

             ● 定点计算代价昂贵

           例如:

           要存放财务数据精确到万分之一、则可以把所有金额乘以一百万、然后存在BIGINT下

 

     ㈡ 字符串

 

        ① 分类

          

MySQL数据类型的最优选择_MySQL

 

        ② 数据如何存储取决于存储引擎

           char和varchar在不同引擎在内存和磁盘可能是不一样的

           不过、对于char、在填充和截取上是一样的、因为、

           这部分是在Server层完成的

           

        ③ 常见 char 使用场景

           

           ● 很短的字符串或所有值都接近同一个长度、如存储密码的MD5值

           ● 经常变更的列、因为char产生的碎片少

           ● 非常短的列、如性别、char(1)的效率更好、毕竟varchar(1)浪费了1一个字节

           

        ④ 和字符集的那点猫腻

           

           CSDN 有个讨论非常热的帖子:有人认为unicode跟utf-8是等同的吗? 点击看讨论贴

           我赶脚、这其实没啥好讨论的、因为、这两个根本就是两回事

           Unicode 是字符编码

           utf8 是字符集

           

           对Unicode编码的字符集、墙裂建议使用varchar 

           显然、utf8 也是Unicode 编码的、而且、随着国际化趋势、utf8 是首选

           那么、结果是、在char 和 varchar 竞争里、varchar 便是最大赢家

           

           可通过下列方法查看MySQL Unicode支持的字符集以及当前的字符集

[plain] 

mysql> select CHARACTER_SET_NAME from character_sets   

    ->  where DESCRIPTION like '%Unicode%'/G;  

*************************** 1. row ***************************  

CHARACTER_SET_NAME: utf8  

*************************** 2. row ***************************  

CHARACTER_SET_NAME: ucs2  

*************************** 3. row ***************************  

CHARACTER_SET_NAME: utf8mb4  

*************************** 4. row ***************************  

CHARACTER_SET_NAME: utf16  

*************************** 5. row ***************************  

CHARACTER_SET_NAME: utf32  

5 rows in set (0.06 sec)  

 

mysql> status;  

--------------  

mysql  Ver 14.14 Distrib 5.5.16, for Linux (i686) using  EditLine wrapper  

  

Connection id:          1  

Current database:       information_schema  

Current user:           root@localhost  

SSL:                    Not in use  

Current pager:          stdout  

Using outfile:          ''  

Using delimiter:        ;  

Server version:         5.5.16-log Source distribution  

Protocol version:       10  

Connection:             Localhost via UNIX socket  

Server characterset:    latin1  

Db     characterset:    utf8  

Client characterset:    utf8  

Conn.  characterset:    utf8  

UNIX socket:            /tmp/mysql.sock  

Uptime:                 2 min 9 sec  

     

        ⑤ 对于InnoDB 建议使用varchar

           现在很多场合都使用了InnoDB、算下来、varchar 又赢了

           

        ⑥ 存储大数据

           

           ● BLOB:采用二进制存储、没有字符集或排序规则

           ● TEXT:采用字符方式存储、有字符集和排序规则

           

           最好尽量避免使用这两、如果可以、可以把BLOB货TEXT 列分离成单独的表

           

           对于使用了BLOB或TEXT大量删除或更新时、

           建议定期使用 optimize table 碎片整理 

           

     ㈢ 日期和时间类型

        

        常见的有 datatime、timestamp 和 date

        从存储上看、timestamp 占 4 个字节、其他两个 8 个字节

        所以、若无意外、最好尽量使用 timestamp 、即使它比较调皮、例如和时区相关

 

bitsCN.com
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 AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

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)

Hot Topics

Java Tutorial
1664
14
PHP Tutorial
1268
29
C# Tutorial
1242
24
When might a full table scan be faster than using an index in MySQL? When might a full table scan be faster than using an index in MySQL? Apr 09, 2025 am 12:05 AM

Full table scanning may be faster in MySQL than using indexes. Specific cases include: 1) the data volume is small; 2) when the query returns a large amount of data; 3) when the index column is not highly selective; 4) when the complex query. By analyzing query plans, optimizing indexes, avoiding over-index and regularly maintaining tables, you can make the best choices in practical applications.

MySQL: Simple Concepts for Easy Learning MySQL: Simple Concepts for Easy Learning Apr 10, 2025 am 09:29 AM

MySQL is an open source relational database management system. 1) Create database and tables: Use the CREATEDATABASE and CREATETABLE commands. 2) Basic operations: INSERT, UPDATE, DELETE and SELECT. 3) Advanced operations: JOIN, subquery and transaction processing. 4) Debugging skills: Check syntax, data type and permissions. 5) Optimization suggestions: Use indexes, avoid SELECT* and use transactions.

MySQL: The Ease of Data Management for Beginners MySQL: The Ease of Data Management for Beginners Apr 09, 2025 am 12:07 AM

MySQL is suitable for beginners because it is simple to install, powerful and easy to manage data. 1. Simple installation and configuration, suitable for a variety of operating systems. 2. Support basic operations such as creating databases and tables, inserting, querying, updating and deleting data. 3. Provide advanced functions such as JOIN operations and subqueries. 4. Performance can be improved through indexing, query optimization and table partitioning. 5. Support backup, recovery and security measures to ensure data security and consistency.

MySQL's Role: Databases in Web Applications MySQL's Role: Databases in Web Applications Apr 17, 2025 am 12:23 AM

The main role of MySQL in web applications is to store and manage data. 1.MySQL efficiently processes user information, product catalogs, transaction records and other data. 2. Through SQL query, developers can extract information from the database to generate dynamic content. 3.MySQL works based on the client-server model to ensure acceptable query speed.

Explain the role of InnoDB redo logs and undo logs. Explain the role of InnoDB redo logs and undo logs. Apr 15, 2025 am 12:16 AM

InnoDB uses redologs and undologs to ensure data consistency and reliability. 1.redologs record data page modification to ensure crash recovery and transaction persistence. 2.undologs records the original data value and supports transaction rollback and MVCC.

MySQL: An Introduction to the World's Most Popular Database MySQL: An Introduction to the World's Most Popular Database Apr 12, 2025 am 12:18 AM

MySQL is an open source relational database management system, mainly used to store and retrieve data quickly and reliably. Its working principle includes client requests, query resolution, execution of queries and return results. Examples of usage include creating tables, inserting and querying data, and advanced features such as JOIN operations. Common errors involve SQL syntax, data types, and permissions, and optimization suggestions include the use of indexes, optimized queries, and partitioning of tables.

MySQL's Place: Databases and Programming MySQL's Place: Databases and Programming Apr 13, 2025 am 12:18 AM

MySQL's position in databases and programming is very important. It is an open source relational database management system that is widely used in various application scenarios. 1) MySQL provides efficient data storage, organization and retrieval functions, supporting Web, mobile and enterprise-level systems. 2) It uses a client-server architecture, supports multiple storage engines and index optimization. 3) Basic usages include creating tables and inserting data, and advanced usages involve multi-table JOINs and complex queries. 4) Frequently asked questions such as SQL syntax errors and performance issues can be debugged through the EXPLAIN command and slow query log. 5) Performance optimization methods include rational use of indexes, optimized query and use of caches. Best practices include using transactions and PreparedStatemen

Why Use MySQL? Benefits and Advantages Why Use MySQL? Benefits and Advantages Apr 12, 2025 am 12:17 AM

MySQL is chosen for its performance, reliability, ease of use, and community support. 1.MySQL provides efficient data storage and retrieval functions, supporting multiple data types and advanced query operations. 2. Adopt client-server architecture and multiple storage engines to support transaction and query optimization. 3. Easy to use, supports a variety of operating systems and programming languages. 4. Have strong community support and provide rich resources and solutions.

See all articles