- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我在正在构建的页面中使用的 SQL 查询。它目前运行大约 8 秒并返回 12000 条记录,这是正确的,但我想知道您是否可以就如何使其更快提出可能的建议?
SELECT DISTINCT Advertiser.AdvertiserID, Business.Name, Business.Address1, Business.Address2, Business.City, Business.State, Business.PostalCode,
Business.Country, Business.Phone, Business.Fax, Business.Email, AdvertiserCategory.CategoryID, AdvertiserCategory.CategoryName AS Category,
(SELECT MAX(PubDate) AS PubDate
FROM NewsPaperAd
WHERE (AdvertiserID = Advertiser.AdvertiserID)
GROUP BY AdvertiserID) AS PubDate
FROM Business INNER JOIN
Advertiser ON Business.BusinessID = Advertiser.AdvertiserID INNER JOIN
Tsheetrecipient ON Advertiser.AdvertiserID = Tsheetrecipient.AdvertiserID LEFT OUTER JOIN
AdvertiserCategory INNER JOIN
AdvertiserCategoryJoin ON AdvertiserCategory.CategoryID = AdvertiserCategoryJoin.CategoryID ON
Advertiser.AdvertiserID = AdvertiserCategoryJoin.AdvertiserID
WHERE ((SELECT MAX(PubDate) AS PubDate
FROM NewsPaperAd AS NewsPaperAd_1
WHERE (AdvertiserID = Advertiser.AdvertiserID)
GROUP BY AdvertiserID) IS NOT NULL)
ORDER BY PubDate DESC
我真的很想知道 group by 子句有什么替代方案,因为这才是真正减慢速度的原因。
Cảm ơn
1 Câu trả lời
此外,通过将 MAX( pubdate ) 的预查询作为第一个 FROM 表(别名),并在 PUBDATE 的 WHERE NOT NULL 上进行过滤,您将仅获取具有发布日期的广告商。作为您的第一个查询,应该进行优化,获取较小的集合,然后加入广告商、业务、类别等。通过使用 STRAIGHT_JOIN,告诉优化器按照您提供的顺序执行此操作,因此它应该强制执行预查询-首先查询并使用 THAT 加入剩下的部分...
我将确保按 AdvertiserID 对 NewsPaperAd 建立索引,并对其余 JOIN 标准建立索引。如果这台机器上没有 MySQL,我唯一有问题的子句将是
其中 PubDate 不为空
SELECT STRAIGHT_JOIN DISTINCT
Advertiser.AdvertiserID,
Business.Name,
Business.Address1,
Business.Address2,
Business.City,
Business.State,
Business.PostalCode,
Business.Country,
Business.Phone,
Business.Fax,
Business.Email,
AdvertiserCategory.CategoryID,
AdvertiserCategory.CategoryName AS Category,
QualifiedPubs.PubDate
FROM
(SELECT AdvertiserID,
MAX(PubDate) AS PubDate
FROM
NewsPaperAd
WHERE
PubDate IS NOT NULL
GROUP BY
AdvertiserID) AS QualifiedPubs
INNER JOIN Advertiser
ON QualifiedPubs.AdvertiserID = Advertiser.AdvertiserID
INNER JOIN Business
ON Advertiser.AdvertiserID = Business.BusinessID
INNER JOIN Tsheetrecipient
ON Advertiser.AdvertiserID = Tsheetrecipient.AdvertiserID
INNER JOIN AdvertiserCategoryJoin
ON Advertiser.AdvertiserID = AdvertiserCategoryJoin.AdvertiserID
LEFT OUTER JOIN AdvertiserCategory
ON AdvertiserCategoryJoin.CategoryID = AdvertiserCategory.CategoryID
ORDER BY
PubDate DESC
关于MYSQL查询、优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5172311/
Hiện tại tôi đang xây dựng một hệ thống mạng khá lớn và tôi cần một giải pháp cơ sở dữ liệu SQL mạnh mẽ. Tôi chọn Mysql thay vì Postgres vì một số tác vụ cần phải chỉ đọc (công cụ MyISAM) và một số tác vụ khác cần phải ghi nhiều (InnoDB).
Tôi sử dụng lệnh sau trong mysql. Khi hiển thị dữ liệu dạng bảng, dữ liệu sẽ được định dạng thành một bảng rất sạch với khoảng cách đều nhau và có dấu | làm dấu phân cách cột. SELECT * FROM TABLE_NAME; Khi tôi chạy lệnh từ CLI như sau
Tôi biết câu hỏi này đã được hỏi nhiều lần trước đây và tôi đã trải qua rất nhiều lần khắc phục sự cố nhưng vẫn chưa có cách nào hiệu quả. Có thể có vấn đề gì đó không ổn với thư mục mà MySQL đang cố gắng cài đặt vào (usr/local/mysql). Điều kỳ lạ về lỗi của tôi là tôi
Dưới đây là cấu trúc dữ liệu SQL của tôi, tôi đang thử hai truy vấn như sau: Chọn Wrk_ID, Wrk_LastName, Skill_Desc từ Worker, Skill where
Chúng tôi có một máy chủ mysql cục bộ (không thuộc phạm vi công cộng) và muốn sao chép máy chủ đó sang phiên bản google cloud sql mà chúng tôi có. Câu hỏi của tôi là: 1. Điều này có thể thực hiện được không? 2. Máy chủ cục bộ của chúng tôi chỉ có thể truy cập được trên mạng cục bộ
Tôi có một bảng (test_table) trong đó một số giá trị trường (ví dụ: trường A, B và C) được chèn từ một ứng dụng bên ngoài và có một trường khác (trường D) mà tôi muốn chèn giá trị từ một bảng hiện có (store_table), nhưng
Tôi muốn tạo một phiên bản AWS RDS rồi quản lý người dùng cơ sở dữ liệu bằng Terraform. Vì vậy, trước tiên, tôi đã tạo một phiên bản RDS và sau đó khởi tạo nhà cung cấp mysql bằng cách sử dụng phiên bản RDS đã tạo để sử dụng nó cho người dùng.
Khi người dùng đăng ký trên trang web của tôi, họ sẽ tạo bảng riêng của mình trong một trong các cơ sở dữ liệu của tôi. Bảng này lưu trữ tất cả bài đăng của người dùng. Điều tôi muốn làm là tạo cho họ một người dùng MySql riêng - một người dùng chỉ có quyền đọc, ghi và xóa khỏi bảng của họ. Để tạo ra nó phải
Tôi có một câu hỏi liên quan đến ColdFusion và Mysql. Tôi có hai bảng: PRODUCT và PRODUCT_CAT. Tôi muốn liệt kê các danh mục có chứa một số sản phẩm đặc biệt được đánh dấu bằng :IS_EXTRANET=1. Vì vậy tôi đã viết điều này
Tôi muốn lấy giá trị của cột recipes_id để lấy giá trị của các mục chứa ingredients_id 2, 17 và 26. Giả sử rằng thành phần_id 2 bị thiếu và không có bản ghi nào được lấy ra. Tôi đã thử toán tử IN
Trong Ubuntu tôi thường cài đặt cả hai, nhưng sự khác biệt giữa máy khách và máy chủ MySQL là gì? Ngoài ra, khi một câu lệnh mới đề cập rằng nó yêu cầu MySQL 5.x, thì nó có nghĩa là máy khách, máy chủ hay cả hai. Ví dụ, liên kết này ht
Tôi xem lại cơ sở dữ liệu của mình và nhận thấy rằng tôi có một số khóa chính có kiểu INT. Như vậy vẫn chưa đủ độc đáo nên tôi nghĩ mình sẽ có hướng dẫn. Tôi xuất thân từ nền tảng Microsoft SQL, trong SSMS bạn có thể chọn loại là "uniqeidentifier" và
Tôi có MySQL trên hệ thống của mình và tôi đang cố xác định xem đó là Oracle MySQL hay MySQL. Có sự khác biệt nào giữa Oracle và MySQL không: http://www.oracle.com/us/products/m
Tôi là người bảo trì mới của một ứng dụng chạy trên MySQL. Người bảo trì trước đã rời đi, để lại rất ít tài liệu và không thể liên lạc được. Vấn đề tôi đang gặp phải là phải mất khoảng 10 giây để thực hiện yêu cầu sau: SELECT COUNT(*) FROM `
Tôi có hai cơ sở dữ liệu MySQL nằm trên hai máy khác nhau. Tôi muốn tự động chuyển dữ liệu từ máy chủ này sang máy chủ khác. Giả sử tôi muốn dữ liệu được truyền vào lúc 4:00 sáng hàng ngày. Tôi có thể không? Có chức năng tích hợp nào của MySQL cho phép chúng ta thực hiện việc này không?
Có cách nào để sử dụng jdbc để truy vấn các bảng mysql nằm trong thư mục bên ngoài thư mục gốc mysql không, hay tôi phải di chuyển chúng vào thư mục cơ sở dữ liệu bên trong thư mục gốc mysql? Tôi không tìm thấy thông tin gì khi tìm kiếm trên Google. hầu hết
Tôi có hai bảng trong cơ sở dữ liệu MySQL. Thành viên và ClassNumbers. Cả hai bảng đều có trường năm thanh toán và cả hai đều có trường mã. Tôi muốn cập nhật năm thanh toán trong bảng thành viên bằng giá trị từ bảng mã số trong đó mã trong thành viên giống với ClassNumb
Tình huống: Tôi có 2 máy chủ, một trong số đó hiện đang lưu trữ một trang web WordPress trực tiếp và tôi muốn có thể di chuyển trang web đó sang máy chủ còn lại trong trường hợp máy chủ đầu tiên ngừng hoạt động. Việc chuyển các tập tin nguồn thì dễ; việc chuyển cơ sở dữ liệu mới là điều tôi cần tìm ra cách thực hiện. Hai máy chủ
Phpmyadmin có một chức năng là "sao chép cơ sở dữ liệu tới".. có câu lệnh mysql nào để viết chức năng này không? Tương tự như việc sao chép cơ sở dữ liệu A sang cơ sở dữ liệu B mới. Câu trả lời tốt nhất là trước tiên tạo một cơ sở dữ liệu được sao chép: CREATE DATABASE duplicate
Tôi có một phần mềm quản lý kho sử dụng mySQL làm hệ điều hành phụ trợ. Tôi đã thử nghiệm trên máy tính của tôi và nó hoạt động tốt. Khi tôi cài đặt phần mềm của mình trên máy tính, tôi phải thực hiện các bước sau: Cài đặt máy chủ mySQL Chỉ định tên người dùng là "root
Tôi là một lập trình viên xuất sắc, rất giỏi!