我们最近开始测试从mySQL5.6到percona server5.7的升级和tokuDB表的使用。数据库为我们的PHP5.5应用程序提供服务,该应用程序使用PDO库进行参数化查询。
在将具有相同数据的percona加载到tokudb表中并将性能与现有产品进行比较后,我们立即注意到性能大幅下降(速度慢了10倍)。对于下面的查询,假设表有1200万行
我已经能够在5.7数据库中将这个问题缩小到这样一个事实,即当执行如下查询时:
SELECT * FROM TABLE WHERE id='12345'; -- exec time 10.5sec
vs.
SELECT * FROM
我有一个脚本,当用户搜索“苹果”时,有一列与“闪亮的苹果”和“腐烂的苹果”等相关搜索。
问题是我的搜索数据库有5,600,000行,而mysql非常落后。
下面是我的代码:
$get = mysql_query("SELECT keyword FROM searches WHERE MATCH (keyword) AGAINST ('".mysql_real_escape_string(preg_replace('#([\S]+)#', '$1', $title))."' IN BOOLEAN MODE) LIMIT 0,
我花了相当多的时间试图追踪到这一点。我在我的网站()上使用了盒装的自动补全功能。当您键入单词时,它会将该单词作为GET变量发送到页面进行处理,然后在mySQL数据库中搜索该单词。该页面如下所示:
$get = $_GET['query'];
$query = "SELECT title,author,id,isbn10,isbn13 FROM textbook
WHERE title LIKE '" . $get . "%'
OR author LIKE '" . $get . "%
最近,我为一个调查开发了一个非常简单的web应用程序。我正在使用MySQL存储我的数据。每个用户都会从数据库表中“随机”抽取一个问题。我需要知道索引是否有助于提高检索性能,而"SELECT“每次都会随机选择记录。谢谢
这是我使用的SQL命令:
'SELECT * FROM iens2.review_phrases ORDER BY RAND() LIMIT 1'
我的问题是:
select * from
(
select * from barcodesA
UNION ALL
select * from barcodesB
)
as barcodesTOTAL, boxes
where barcodesTotal.code=boxes.code;
表barcodesA有4,000个条目表barcodesB有4,000个条目表框有大约180.000个条目
处理查询需要30秒。
另一个有问题的查询:
select * from
viewBarcodesTotal, boxes
where b
我有一个包含4个表的MySql数据库(实际上,比这多得多,但只有这4个与问题相关),让我们称它们为A、B、C和D。下面是模式:
CREATE TABLE A
(
pKey INT NOT NULL AUTO_INCREMENT,
name NVARCHAR(50),
PRIMARY KEY(pKey),
UNIQUE INDEX(name)
);
CREATE TABLE C
(
pKey INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(pKey)
);
CREATE TABLE B
(
pKey INT NOT NULL AU
我有一个关于mysql中的连接和索引的快速问题。如果我有两张表:
table1
id
name
table2
table1id
table2title
我使用id和table1id连接table2和table1,我会在table2的table1和table1id中添加id的索引吗?或者我只是向其中一个表中添加一个索引?即时通信工具使用带有MyISAM版本5.x的MySQL
我有vps :524(215 Vps)交换:524(75 Vps),mysql 5.1.61和三个表。
包含一列“数据”的表“new”包含10万条记录。
record1
record2
record3
有一列“数据”的表“old”包含1000条记录。
record1
record4
record5
表“结果”中也有一列“数据”。
我比较表‘新’和表‘旧’,并插入表‘结果’记录,而不是表‘旧’。在这个例子中它将是
record2
record3
我使用查询
INSERT INTO result
SELECT data FROM new
LEFT JOIN old
当我在一个包含2200万行的表上运行以下查询时,它需要20秒才能运行:
select p.*,
(select avg(close)
from endOfDayData p2
where p2.symbol = p.symbol and
p2.date between p.date - interval 6 day and p.date
) as MvgAvg_X
from endOfDayData p
where p.symbol = 'AAPL'
表结构如下:
mysql> desc endOfDayData;
+--------+---------------+--
假设我有players表。它由3行组成(它有更多,但假设它只有3行)。member_id, name, exp。我在每个页面中使用member_id行,这就是为什么我只向member_id添加索引的原因。但是我想在一个页面上用最高的exp做一个顶级球员的列表。所以我做了这样的事情:
$query = mysql_query("SELECT * FROM players ORDER BY `exp` DESC");
如果我有10k个播放器,我不能在不向exp添加索引的情况下运行这样的查询。所以我的问题是,我是否应该这样做:
mysql_query("ALTER T
我有个问题,我希望有人能帮我:
那到底是怎么回事?
我已经开发了一个PHP脚本,它可以将XML文件从文件夹中导入到数据库中。
XML文件如下所示-
基本上,脚本将XML文件中的信息存储到5个表中,这是正确的。但是问题是,我的文件不包含PLAYER对象中的玩家的ID信息,所以在我将所有内容导入数据库之后,我必须运行以下查询:
$sql = "SELECT igraci.ID, utakmice.Player_ID, utakmice.ID AS broj FROM igraci LEFT JOIN utakmice ON (igraci.Team_ID = utakmice.Tea