MySQL 修改表字段优化方案
MySQL 修改表字段优化方案,要求:现在需要要改一下字段名,增加一个字段,在删除另一个字段,改一个字段类型.
要求:现在需要要改一下字段名,增加一个字段,在删除另一个字段,改一个字段类型.
建立如下表(原表):
CREATE TABLE month(
id INT,
week VARCHAR(10),
day VARCHAR(10),
hour VARCHAR(10),
PRIMARY KEY (id)
);
得到的最终表为:
CREATE TABLE month(
id INT ,
week VARCHAR(10),
today VARCHAR(20), -- 把day VARCHAR(10)改为 today VARCHAR(20)
minute VARCHAR(20), -- 增加新的字段 minute VARCHAR(20),删除字段hour VARCHAR(10)
PRIMARY KEY (id)
);
方案1:
ALTER TABLE month CHANGE day today VARCHAR(20);
ALTER TABLE month DROP COLUMN hour;
ALTER TABLE month add minute VARCHAR(20);
案例1 分析:
ALTER TABLE 在MYSQL后台的操作是
1. 新建一临时表
2. 复制数据到临时表
3. 删除原表
4. 更名临时表为原表名
时间主要的消耗在 "复制数据到临时表".
复制数据到临时表这一步,影响时间的因素有,索引维护,,数据插入,锁
所以随着修改字段的数目增加,都需要重复以上的操作.当数据量很大时,复制数据到临时表的时间就会更长.
案例2:
CREATE TABLE temp_month(
id INT,
week VARCHAR(10),
today VARCHAR(20),
minute VARCHAR(20) DEFAULT '00'
);
INSERT INTO temp_month(id, week, today) (SELECT id, week, day FROM month);
DROP TABLE month;
ALTER TABLE temp_month RENAME TO month;
ALTER TABLE month ADD PRIMARY KEY(id);
案例2 分析:
自己创建一个临时表,把需要改的字段一次性修改完,用insert对所有修改的字段只用了一次“复制数据”.然后更改表名(更改表名是不需要扫描全表的)
最在后加主键(这样可以避免复制表的过程中,每插入一行数据都要对索引进行的维护操作.最后加索引是一次性对全表进行维护)
===================================================================================
以上两种方案可以看出,随着需要更改的字段的增加.方案2比方案1的速度是单调递增的.
如果使用方案1:建议设置tmp_table_size参数大小,此参数用于系统建立临时表的大小.
建议设置:sort_buffer_size 参数大小,此参数用于排序的缓存.对索引维护会使用到这个参数.
如果你使用表的存储引擎是InnoDB.可以更改innodb_buffer_pool_size(windows:%mysql%/my.ini. linux:/etc/mysql/my.cnf)设置来加快修改的速度.
特别是对于大量数据的表.建议设置大小为内存大小的50%-80%.

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

How to use MySQLi to establish a database connection in PHP: Include MySQLi extension (require_once) Create connection function (functionconnect_to_db) Call connection function ($conn=connect_to_db()) Execute query ($result=$conn->query()) Close connection ( $conn->close())

Apple's latest releases of iOS18, iPadOS18 and macOS Sequoia systems have added an important feature to the Photos application, designed to help users easily recover photos and videos lost or damaged due to various reasons. The new feature introduces an album called "Recovered" in the Tools section of the Photos app that will automatically appear when a user has pictures or videos on their device that are not part of their photo library. The emergence of the "Recovered" album provides a solution for photos and videos lost due to database corruption, the camera application not saving to the photo library correctly, or a third-party application managing the photo library. Users only need a few simple steps

To handle database connection errors in PHP, you can use the following steps: Use mysqli_connect_errno() to obtain the error code. Use mysqli_connect_error() to get the error message. By capturing and logging these error messages, database connection issues can be easily identified and resolved, ensuring the smooth running of your application.

How to integrate GoWebSocket with a database: Set up a database connection: Use the database/sql package to connect to the database. Store WebSocket messages to the database: Use the INSERT statement to insert the message into the database. Retrieve WebSocket messages from the database: Use the SELECT statement to retrieve messages from the database.

Using the database callback function in Golang can achieve: executing custom code after the specified database operation is completed. Add custom behavior through separate functions without writing additional code. Callback functions are available for insert, update, delete, and query operations. You must use the sql.Exec, sql.QueryRow, or sql.Query function to use the callback function.

Use the DataAccessObjects (DAO) library in C++ to connect and operate the database, including establishing database connections, executing SQL queries, inserting new records and updating existing records. The specific steps are: 1. Include necessary library statements; 2. Open the database file; 3. Create a Recordset object to execute SQL queries or manipulate data; 4. Traverse the results or update records according to specific needs.

This article recommends the top ten digital currency trading apps in the world, including Binance, OKX, Huobi Global, Coinbase, Kraken, Gate.io, KuCoin, Bitfinex, Gemini and Bitstamp. These platforms have their own characteristics in terms of transaction pair quantity, transaction speed, security, compliance, user experience, etc. For example, Binance is known for its high transaction speed and extensive services, while Coinbase is more suitable for novices. Choosing a platform that suits you requires comprehensive consideration of your own needs and risk tolerance. Learn about the world's mainstream digital currency trading platforms to help you conduct digital asset trading safely and efficiently.

This article will provide a detailed introduction to how to install and register a Bitcoin trading application. The Bitcoin trading app allows users to manage and trade cryptocurrencies such as Bitcoin. The article guides users through the installation and registration process step by step, including downloading applications, creating accounts, performing identity verification, and first deposit. The goal of the article is to provide beginners with clear and easy-to-understand guidelines to help them easily enter the world of Bitcoin trading.
