我在具有以下规格的服务器上运行 MySQL 服务器 -
双 Xeon 四核 2.0、2048 MB RAM、1 个 160 GB SATA Fedora Core + SSH
但是用于插入 10000 条记录的 MySQL 进程占用超过 100% 的 CPU 和高达 1 GB 的 RAM。这是一个简单的插入语句。
为什么 MySQL 占用了这么多内存,可以做些什么呢?
查询中最重的部分是 SELECT:
Select FirstName, LastName, CountryID, Address, Phone
From Test2.Customer
Where UserID Between 1 and 5000
and CustomerID in (Select CustId from Cust_Details Where CustName like 'Mi%')
嵌套查询可能对每一行重复。您可以检查这个正在运行的EXPLAIN PLAN
+ 所有 SELECT 查询。我猜想'like' 运算符用于非索引列。在这种情况下 ( like 'xyz%'
),一个简单的索引可以大大提高性能。
[补充:此外,SELECT CustId ...必须输出大于5000的id,根本不需要。Cust_Details 上的复合索引 (CustId, CustName) 也必须有用。]
尝试使用加入:
Select FirstName, LastName, CountryID, Address, Phone
From Test2.Customer c, Cust_Details cd
Where c.UserID Between 1 and 5000
and c.CustomerID=cd.CustId
and left(cd.CustName) = 'Mi'